Coverage Report

Created: 2025-05-27 01:12

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
D:\a\vk-layer-for-rust\vk-layer-for-rust\vulkan-layer\src\global_simple_intercept\generated.rs
Line
Count
Source
1
// Copyright 2025 Google LLC
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
//     http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14
15
#![allow(missing_docs)]
16
// This file is generated from the Vulkan XML API registry.
17
#![allow(unused_unsafe)]
18
use ash::vk;
19
use smallvec::smallvec;
20
use std::{
21
    borrow::Borrow,
22
    collections::HashSet,
23
    ffi::{c_char, c_int, c_void, CStr},
24
    ptr::NonNull,
25
    sync::Arc,
26
};
27
28
use super::{
29
    bool_iterator_from_raw_parts, get_device_proc_addr_loader, get_instance_proc_addr_loader,
30
    maybe_slice_from_raw_parts, maybe_uninit_slice_from_raw_parts_mut,
31
    uninit_slice_from_raw_parts_mut, ApiVersion, Feature, TryFromExtensionError, VulkanCommand,
32
};
33
use crate::{
34
    fill_vk_out_array,
35
    vk_utils::{ptr_as_uninit_mut, slice_from_raw_parts},
36
    DeviceHooks, DeviceInfo, Global, InstanceHooks, InstanceInfo, Layer, LayerResult,
37
    LayerVulkanCommand,
38
};
39
40
#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Debug)]
41
pub enum Extension {
42
    KHRSurface,
43
    KHRSwapchain,
44
    KHRDisplay,
45
    KHRDisplaySwapchain,
46
    KHRXlibSurface,
47
    KHRXcbSurface,
48
    KHRWaylandSurface,
49
    KHRAndroidSurface,
50
    KHRWin32Surface,
51
    KHRSamplerMirrorClampToEdge,
52
    KHRVideoQueue,
53
    KHRVideoDecodeQueue,
54
    KHRVideoDecodeH264,
55
    KHRDynamicRendering,
56
    KHRMultiview,
57
    KHRGetPhysicalDeviceProperties2,
58
    KHRDeviceGroup,
59
    KHRShaderDrawParameters,
60
    KHRMaintenance1,
61
    KHRDeviceGroupCreation,
62
    KHRExternalMemoryCapabilities,
63
    KHRExternalMemory,
64
    KHRExternalMemoryWin32,
65
    KHRExternalMemoryFd,
66
    KHRWin32KeyedMutex,
67
    KHRExternalSemaphoreCapabilities,
68
    KHRExternalSemaphore,
69
    KHRExternalSemaphoreWin32,
70
    KHRExternalSemaphoreFd,
71
    KHRPushDescriptor,
72
    KHRShaderFloat16Int8,
73
    KHR16bitStorage,
74
    KHRIncrementalPresent,
75
    KHRDescriptorUpdateTemplate,
76
    KHRImagelessFramebuffer,
77
    KHRCreateRenderpass2,
78
    KHRSharedPresentableImage,
79
    KHRExternalFenceCapabilities,
80
    KHRExternalFence,
81
    KHRExternalFenceWin32,
82
    KHRExternalFenceFd,
83
    KHRPerformanceQuery,
84
    KHRMaintenance2,
85
    KHRGetSurfaceCapabilities2,
86
    KHRVariablePointers,
87
    KHRGetDisplayProperties2,
88
    KHRDedicatedAllocation,
89
    KHRStorageBufferStorageClass,
90
    KHRRelaxedBlockLayout,
91
    KHRGetMemoryRequirements2,
92
    KHRImageFormatList,
93
    KHRSamplerYcbcrConversion,
94
    KHRBindMemory2,
95
    KHRPortabilitySubset,
96
    KHRMaintenance3,
97
    KHRDrawIndirectCount,
98
    KHRShaderSubgroupExtendedTypes,
99
    KHR8bitStorage,
100
    KHRShaderAtomicInt64,
101
    KHRShaderClock,
102
    KHRVideoDecodeH265,
103
    KHRGlobalPriority,
104
    KHRDriverProperties,
105
    KHRShaderFloatControls,
106
    KHRDepthStencilResolve,
107
    KHRSwapchainMutableFormat,
108
    KHRTimelineSemaphore,
109
    KHRVulkanMemoryModel,
110
    KHRShaderTerminateInvocation,
111
    KHRFragmentShadingRate,
112
    KHRSpirv14,
113
    KHRSurfaceProtectedCapabilities,
114
    KHRSeparateDepthStencilLayouts,
115
    KHRPresentWait,
116
    KHRUniformBufferStandardLayout,
117
    KHRBufferDeviceAddress,
118
    KHRDeferredHostOperations,
119
    KHRPipelineExecutableProperties,
120
    KHRMapMemory2,
121
    KHRShaderIntegerDotProduct,
122
    KHRPipelineLibrary,
123
    KHRShaderNonSemanticInfo,
124
    KHRPresentId,
125
    KHRVideoEncodeQueue,
126
    KHRSynchronization2,
127
    KHRFragmentShaderBarycentric,
128
    KHRShaderSubgroupUniformControlFlow,
129
    KHRZeroInitializeWorkgroupMemory,
130
    KHRWorkgroupMemoryExplicitLayout,
131
    KHRCopyCommands2,
132
    KHRFormatFeatureFlags2,
133
    KHRRayTracingMaintenance1,
134
    KHRPortabilityEnumeration,
135
    KHRMaintenance4,
136
    KHRRayTracingPositionFetch,
137
    ANDROIDNativeBuffer,
138
    EXTDebugReport,
139
    NVGlslShader,
140
    EXTDepthRangeUnrestricted,
141
    IMGFilterCubic,
142
    AMDRasterizationOrder,
143
    AMDShaderTrinaryMinmax,
144
    AMDShaderExplicitVertexParameter,
145
    EXTDebugMarker,
146
    AMDGcnShader,
147
    NVDedicatedAllocation,
148
    EXTTransformFeedback,
149
    NVXBinaryImport,
150
    NVXImageViewHandle,
151
    AMDDrawIndirectCount,
152
    AMDNegativeViewportHeight,
153
    AMDGpuShaderHalfFloat,
154
    AMDShaderBallot,
155
    EXTVideoEncodeH264,
156
    EXTVideoEncodeH265,
157
    AMDTextureGatherBiasLod,
158
    AMDShaderInfo,
159
    AMDShaderImageLoadStoreLod,
160
    GGPStreamDescriptorSurface,
161
    NVCornerSampledImage,
162
    IMGFormatPvrtc,
163
    NVExternalMemoryCapabilities,
164
    NVExternalMemory,
165
    NVExternalMemoryWin32,
166
    NVWin32KeyedMutex,
167
    EXTValidationFlags,
168
    NNViSurface,
169
    EXTShaderSubgroupBallot,
170
    EXTShaderSubgroupVote,
171
    EXTTextureCompressionAstcHdr,
172
    EXTAstcDecodeMode,
173
    EXTPipelineRobustness,
174
    EXTConditionalRendering,
175
    NVClipSpaceWScaling,
176
    EXTDirectModeDisplay,
177
    EXTAcquireXlibDisplay,
178
    EXTDisplaySurfaceCounter,
179
    EXTDisplayControl,
180
    GOOGLEDisplayTiming,
181
    NVSampleMaskOverrideCoverage,
182
    NVGeometryShaderPassthrough,
183
    NVViewportArray2,
184
    NVXMultiviewPerViewAttributes,
185
    NVViewportSwizzle,
186
    EXTDiscardRectangles,
187
    EXTConservativeRasterization,
188
    EXTDepthClipEnable,
189
    EXTSwapchainColorspace,
190
    EXTHdrMetadata,
191
    MVKIosSurface,
192
    MVKMacosSurface,
193
    EXTExternalMemoryDmaBuf,
194
    EXTQueueFamilyForeign,
195
    EXTDebugUtils,
196
    ANDROIDExternalMemoryAndroidHardwareBuffer,
197
    EXTSamplerFilterMinmax,
198
    AMDGpuShaderInt16,
199
    AMDMixedAttachmentSamples,
200
    AMDShaderFragmentMask,
201
    EXTInlineUniformBlock,
202
    EXTShaderStencilExport,
203
    EXTSampleLocations,
204
    EXTBlendOperationAdvanced,
205
    NVFragmentCoverageToColor,
206
    NVFramebufferMixedSamples,
207
    NVFillRectangle,
208
    NVShaderSmBuiltins,
209
    EXTPostDepthCoverage,
210
    EXTImageDrmFormatModifier,
211
    EXTValidationCache,
212
    EXTDescriptorIndexing,
213
    EXTShaderViewportIndexLayer,
214
    NVShadingRateImage,
215
    NVRayTracing,
216
    NVRepresentativeFragmentTest,
217
    EXTFilterCubic,
218
    QCOMRenderPassShaderResolve,
219
    EXTGlobalPriority,
220
    EXTExternalMemoryHost,
221
    AMDBufferMarker,
222
    AMDPipelineCompilerControl,
223
    EXTCalibratedTimestamps,
224
    AMDShaderCoreProperties,
225
    AMDMemoryOverallocationBehavior,
226
    EXTVertexAttributeDivisor,
227
    GGPFrameToken,
228
    EXTPipelineCreationFeedback,
229
    NVShaderSubgroupPartitioned,
230
    NVComputeShaderDerivatives,
231
    NVMeshShader,
232
    NVFragmentShaderBarycentric,
233
    NVShaderImageFootprint,
234
    NVScissorExclusive,
235
    NVDeviceDiagnosticCheckpoints,
236
    INTELShaderIntegerFunctions2,
237
    INTELPerformanceQuery,
238
    EXTPciBusInfo,
239
    AMDDisplayNativeHdr,
240
    FUCHSIAImagepipeSurface,
241
    EXTMetalSurface,
242
    EXTFragmentDensityMap,
243
    EXTScalarBlockLayout,
244
    GOOGLEHlslFunctionality1,
245
    GOOGLEDecorateString,
246
    EXTSubgroupSizeControl,
247
    AMDShaderCoreProperties2,
248
    AMDDeviceCoherentMemory,
249
    EXTShaderImageAtomicInt64,
250
    EXTMemoryBudget,
251
    EXTMemoryPriority,
252
    NVDedicatedAllocationImageAliasing,
253
    EXTBufferDeviceAddress,
254
    EXTToolingInfo,
255
    EXTSeparateStencilUsage,
256
    EXTValidationFeatures,
257
    NVCooperativeMatrix,
258
    NVCoverageReductionMode,
259
    EXTFragmentShaderInterlock,
260
    EXTYcbcrImageArrays,
261
    EXTProvokingVertex,
262
    EXTFullScreenExclusive,
263
    EXTHeadlessSurface,
264
    EXTLineRasterization,
265
    EXTShaderAtomicFloat,
266
    EXTHostQueryReset,
267
    EXTIndexTypeUint8,
268
    EXTExtendedDynamicState,
269
    EXTShaderAtomicFloat2,
270
    EXTSurfaceMaintenance1,
271
    EXTSwapchainMaintenance1,
272
    EXTShaderDemoteToHelperInvocation,
273
    NVDeviceGeneratedCommands,
274
    NVInheritedViewportScissor,
275
    EXTTexelBufferAlignment,
276
    QCOMRenderPassTransform,
277
    EXTDeviceMemoryReport,
278
    EXTAcquireDrmDisplay,
279
    EXTRobustness2,
280
    EXTCustomBorderColor,
281
    GOOGLEUserType,
282
    NVPresentBarrier,
283
    EXTPrivateData,
284
    EXTPipelineCreationCacheControl,
285
    NVDeviceDiagnosticsConfig,
286
    QCOMRenderPassStoreOps,
287
    NVLowLatency,
288
    EXTMetalObjects,
289
    EXTDescriptorBuffer,
290
    EXTGraphicsPipelineLibrary,
291
    AMDShaderEarlyAndLateFragmentTests,
292
    NVFragmentShadingRateEnums,
293
    NVRayTracingMotionBlur,
294
    EXTYcbcr2plane444Formats,
295
    EXTFragmentDensityMap2,
296
    QCOMRotatedCopyCommands,
297
    EXTImageRobustness,
298
    EXTImageCompressionControl,
299
    EXTAttachmentFeedbackLoopLayout,
300
    EXT4444Formats,
301
    EXTDeviceFault,
302
    ARMRasterizationOrderAttachmentAccess,
303
    EXTRgba10x6Formats,
304
    NVAcquireWinrtDisplay,
305
    EXTDirectfbSurface,
306
    VALVEMutableDescriptorType,
307
    EXTVertexInputDynamicState,
308
    EXTPhysicalDeviceDrm,
309
    EXTDeviceAddressBindingReport,
310
    EXTDepthClipControl,
311
    EXTPrimitiveTopologyListRestart,
312
    FUCHSIAExternalMemory,
313
    FUCHSIAExternalSemaphore,
314
    FUCHSIABufferCollection,
315
    HUAWEISubpassShading,
316
    HUAWEIInvocationMask,
317
    NVExternalMemoryRdma,
318
    EXTPipelineProperties,
319
    EXTMultisampledRenderToSingleSampled,
320
    EXTExtendedDynamicState2,
321
    QNXScreenSurface,
322
    EXTColorWriteEnable,
323
    EXTPrimitivesGeneratedQuery,
324
    EXTGlobalPriorityQuery,
325
    EXTImageViewMinLod,
326
    EXTMultiDraw,
327
    EXTImage2dViewOf3d,
328
    EXTShaderTileImage,
329
    EXTOpacityMicromap,
330
    NVDisplacementMicromap,
331
    EXTLoadStoreOpNone,
332
    HUAWEIClusterCullingShader,
333
    EXTBorderColorSwizzle,
334
    EXTPageableDeviceLocalMemory,
335
    ARMShaderCoreProperties,
336
    EXTImageSlicedViewOf3d,
337
    VALVEDescriptorSetHostMapping,
338
    EXTDepthClampZeroOne,
339
    EXTNonSeamlessCubeMap,
340
    QCOMFragmentDensityMapOffset,
341
    NVCopyMemoryIndirect,
342
    NVMemoryDecompression,
343
    NVLinearColorAttachment,
344
    GOOGLESurfacelessQuery,
345
    EXTImageCompressionControlSwapchain,
346
    QCOMImageProcessing,
347
    EXTExtendedDynamicState3,
348
    EXTSubpassMergeFeedback,
349
    LUNARGDirectDriverLoading,
350
    EXTShaderModuleIdentifier,
351
    EXTRasterizationOrderAttachmentAccess,
352
    NVOpticalFlow,
353
    EXTLegacyDithering,
354
    EXTPipelineProtectedAccess,
355
    EXTShaderObject,
356
    QCOMTileProperties,
357
    SECAmigoProfiling,
358
    QCOMMultiviewPerViewViewports,
359
    NVRayTracingInvocationReorder,
360
    EXTMutableDescriptorType,
361
    ARMShaderCoreBuiltins,
362
    EXTPipelineLibraryGroupHandles,
363
    EXTDynamicRenderingUnusedAttachments,
364
    QCOMMultiviewPerViewRenderAreas,
365
    EXTAttachmentFeedbackLoopDynamicState,
366
    KHRAccelerationStructure,
367
    KHRRayTracingPipeline,
368
    KHRRayQuery,
369
    EXTMeshShader,
370
}
371
372
impl TryFrom<&str> for Extension {
373
    type Error = TryFromExtensionError;
374
375
44
    fn try_from(value: &str) -> Result<Self, Self::Error> {
376
44
        match value {
377
44
            "VK_KHR_surface" => 
Ok(Extension::KHRSurface)16
,
378
28
            "VK_KHR_swapchain" => 
Ok(Extension::KHRSwapchain)16
,
379
12
            "VK_KHR_display" => 
Ok(Extension::KHRDisplay)0
,
380
12
            "VK_KHR_display_swapchain" => 
Ok(Extension::KHRDisplaySwapchain)0
,
381
12
            "VK_KHR_xlib_surface" => 
Ok(Extension::KHRXlibSurface)0
,
382
12
            "VK_KHR_xcb_surface" => 
Ok(Extension::KHRXcbSurface)0
,
383
12
            "VK_KHR_wayland_surface" => 
Ok(Extension::KHRWaylandSurface)0
,
384
12
            "VK_KHR_android_surface" => 
Ok(Extension::KHRAndroidSurface)0
,
385
12
            "VK_KHR_win32_surface" => 
Ok(Extension::KHRWin32Surface)0
,
386
12
            "VK_KHR_sampler_mirror_clamp_to_edge" => 
Ok(Extension::KHRSamplerMirrorClampToEdge)0
,
387
12
            "VK_KHR_video_queue" => 
Ok(Extension::KHRVideoQueue)0
,
388
12
            "VK_KHR_video_decode_queue" => 
Ok(Extension::KHRVideoDecodeQueue)0
,
389
12
            "VK_KHR_video_decode_h264" => 
Ok(Extension::KHRVideoDecodeH264)0
,
390
12
            "VK_KHR_dynamic_rendering" => 
Ok(Extension::KHRDynamicRendering)0
,
391
12
            "VK_KHR_multiview" => 
Ok(Extension::KHRMultiview)0
,
392
12
            "VK_KHR_get_physical_device_properties2" => {
393
7
                Ok(Extension::KHRGetPhysicalDeviceProperties2)
394
            }
395
5
            "VK_KHR_device_group" => 
Ok(Extension::KHRDeviceGroup)0
,
396
5
            "VK_KHR_shader_draw_parameters" => 
Ok(Extension::KHRShaderDrawParameters)0
,
397
5
            "VK_KHR_maintenance1" => 
Ok(Extension::KHRMaintenance1)0
,
398
5
            "VK_KHR_device_group_creation" => 
Ok(Extension::KHRDeviceGroupCreation)0
,
399
5
            "VK_KHR_external_memory_capabilities" => 
Ok(Extension::KHRExternalMemoryCapabilities)2
,
400
3
            "VK_KHR_external_memory" => 
Ok(Extension::KHRExternalMemory)0
,
401
3
            "VK_KHR_external_memory_win32" => 
Ok(Extension::KHRExternalMemoryWin32)0
,
402
3
            "VK_KHR_external_memory_fd" => 
Ok(Extension::KHRExternalMemoryFd)0
,
403
3
            "VK_KHR_win32_keyed_mutex" => 
Ok(Extension::KHRWin32KeyedMutex)0
,
404
3
            "VK_KHR_external_semaphore_capabilities" => {
405
0
                Ok(Extension::KHRExternalSemaphoreCapabilities)
406
            }
407
3
            "VK_KHR_external_semaphore" => 
Ok(Extension::KHRExternalSemaphore)0
,
408
3
            "VK_KHR_external_semaphore_win32" => 
Ok(Extension::KHRExternalSemaphoreWin32)0
,
409
3
            "VK_KHR_external_semaphore_fd" => 
Ok(Extension::KHRExternalSemaphoreFd)0
,
410
3
            "VK_KHR_push_descriptor" => 
Ok(Extension::KHRPushDescriptor)0
,
411
3
            "VK_KHR_shader_float16_int8" => 
Ok(Extension::KHRShaderFloat16Int8)0
,
412
3
            "VK_KHR_16bit_storage" => 
Ok(Extension::KHR16bitStorage)0
,
413
3
            "VK_KHR_incremental_present" => 
Ok(Extension::KHRIncrementalPresent)0
,
414
3
            "VK_KHR_descriptor_update_template" => 
Ok(Extension::KHRDescriptorUpdateTemplate)0
,
415
3
            "VK_KHR_imageless_framebuffer" => 
Ok(Extension::KHRImagelessFramebuffer)0
,
416
3
            "VK_KHR_create_renderpass2" => 
Ok(Extension::KHRCreateRenderpass2)0
,
417
3
            "VK_KHR_shared_presentable_image" => 
Ok(Extension::KHRSharedPresentableImage)0
,
418
3
            "VK_KHR_external_fence_capabilities" => 
Ok(Extension::KHRExternalFenceCapabilities)0
,
419
3
            "VK_KHR_external_fence" => 
Ok(Extension::KHRExternalFence)0
,
420
3
            "VK_KHR_external_fence_win32" => 
Ok(Extension::KHRExternalFenceWin32)0
,
421
3
            "VK_KHR_external_fence_fd" => 
Ok(Extension::KHRExternalFenceFd)0
,
422
3
            "VK_KHR_performance_query" => 
Ok(Extension::KHRPerformanceQuery)0
,
423
3
            "VK_KHR_maintenance2" => 
Ok(Extension::KHRMaintenance2)0
,
424
3
            "VK_KHR_get_surface_capabilities2" => 
Ok(Extension::KHRGetSurfaceCapabilities2)0
,
425
3
            "VK_KHR_variable_pointers" => 
Ok(Extension::KHRVariablePointers)0
,
426
3
            "VK_KHR_get_display_properties2" => 
Ok(Extension::KHRGetDisplayProperties2)0
,
427
3
            "VK_KHR_dedicated_allocation" => 
Ok(Extension::KHRDedicatedAllocation)0
,
428
3
            "VK_KHR_storage_buffer_storage_class" => 
Ok(Extension::KHRStorageBufferStorageClass)0
,
429
3
            "VK_KHR_relaxed_block_layout" => 
Ok(Extension::KHRRelaxedBlockLayout)0
,
430
3
            "VK_KHR_get_memory_requirements2" => 
Ok(Extension::KHRGetMemoryRequirements2)0
,
431
3
            "VK_KHR_image_format_list" => 
Ok(Extension::KHRImageFormatList)0
,
432
3
            "VK_KHR_sampler_ycbcr_conversion" => 
Ok(Extension::KHRSamplerYcbcrConversion)0
,
433
3
            "VK_KHR_bind_memory2" => 
Ok(Extension::KHRBindMemory2)0
,
434
3
            "VK_KHR_portability_subset" => 
Ok(Extension::KHRPortabilitySubset)0
,
435
3
            "VK_KHR_maintenance3" => 
Ok(Extension::KHRMaintenance3)0
,
436
3
            "VK_KHR_draw_indirect_count" => 
Ok(Extension::KHRDrawIndirectCount)0
,
437
3
            "VK_KHR_shader_subgroup_extended_types" => {
438
0
                Ok(Extension::KHRShaderSubgroupExtendedTypes)
439
            }
440
3
            "VK_KHR_8bit_storage" => 
Ok(Extension::KHR8bitStorage)0
,
441
3
            "VK_KHR_shader_atomic_int64" => 
Ok(Extension::KHRShaderAtomicInt64)0
,
442
3
            "VK_KHR_shader_clock" => 
Ok(Extension::KHRShaderClock)0
,
443
3
            "VK_KHR_video_decode_h265" => 
Ok(Extension::KHRVideoDecodeH265)0
,
444
3
            "VK_KHR_global_priority" => 
Ok(Extension::KHRGlobalPriority)0
,
445
3
            "VK_KHR_driver_properties" => 
Ok(Extension::KHRDriverProperties)0
,
446
3
            "VK_KHR_shader_float_controls" => 
Ok(Extension::KHRShaderFloatControls)0
,
447
3
            "VK_KHR_depth_stencil_resolve" => 
Ok(Extension::KHRDepthStencilResolve)0
,
448
3
            "VK_KHR_swapchain_mutable_format" => 
Ok(Extension::KHRSwapchainMutableFormat)0
,
449
3
            "VK_KHR_timeline_semaphore" => 
Ok(Extension::KHRTimelineSemaphore)0
,
450
3
            "VK_KHR_vulkan_memory_model" => 
Ok(Extension::KHRVulkanMemoryModel)0
,
451
3
            "VK_KHR_shader_terminate_invocation" => 
Ok(Extension::KHRShaderTerminateInvocation)0
,
452
3
            "VK_KHR_fragment_shading_rate" => 
Ok(Extension::KHRFragmentShadingRate)0
,
453
3
            "VK_KHR_spirv_1_4" => 
Ok(Extension::KHRSpirv14)0
,
454
3
            "VK_KHR_surface_protected_capabilities" => {
455
0
                Ok(Extension::KHRSurfaceProtectedCapabilities)
456
            }
457
3
            "VK_KHR_separate_depth_stencil_layouts" => {
458
0
                Ok(Extension::KHRSeparateDepthStencilLayouts)
459
            }
460
3
            "VK_KHR_present_wait" => 
Ok(Extension::KHRPresentWait)0
,
461
3
            "VK_KHR_uniform_buffer_standard_layout" => {
462
0
                Ok(Extension::KHRUniformBufferStandardLayout)
463
            }
464
3
            "VK_KHR_buffer_device_address" => 
Ok(Extension::KHRBufferDeviceAddress)0
,
465
3
            "VK_KHR_deferred_host_operations" => 
Ok(Extension::KHRDeferredHostOperations)0
,
466
3
            "VK_KHR_pipeline_executable_properties" => {
467
0
                Ok(Extension::KHRPipelineExecutableProperties)
468
            }
469
3
            "VK_KHR_map_memory2" => 
Ok(Extension::KHRMapMemory2)0
,
470
3
            "VK_KHR_shader_integer_dot_product" => 
Ok(Extension::KHRShaderIntegerDotProduct)0
,
471
3
            "VK_KHR_pipeline_library" => 
Ok(Extension::KHRPipelineLibrary)0
,
472
3
            "VK_KHR_shader_non_semantic_info" => 
Ok(Extension::KHRShaderNonSemanticInfo)0
,
473
3
            "VK_KHR_present_id" => 
Ok(Extension::KHRPresentId)0
,
474
3
            "VK_KHR_video_encode_queue" => 
Ok(Extension::KHRVideoEncodeQueue)0
,
475
3
            "VK_KHR_synchronization2" => 
Ok(Extension::KHRSynchronization2)0
,
476
3
            "VK_KHR_fragment_shader_barycentric" => 
Ok(Extension::KHRFragmentShaderBarycentric)0
,
477
3
            "VK_KHR_shader_subgroup_uniform_control_flow" => {
478
0
                Ok(Extension::KHRShaderSubgroupUniformControlFlow)
479
            }
480
3
            "VK_KHR_zero_initialize_workgroup_memory" => {
481
0
                Ok(Extension::KHRZeroInitializeWorkgroupMemory)
482
            }
483
3
            "VK_KHR_workgroup_memory_explicit_layout" => {
484
0
                Ok(Extension::KHRWorkgroupMemoryExplicitLayout)
485
            }
486
3
            "VK_KHR_copy_commands2" => 
Ok(Extension::KHRCopyCommands2)0
,
487
3
            "VK_KHR_format_feature_flags2" => 
Ok(Extension::KHRFormatFeatureFlags2)0
,
488
3
            "VK_KHR_ray_tracing_maintenance1" => 
Ok(Extension::KHRRayTracingMaintenance1)0
,
489
3
            "VK_KHR_portability_enumeration" => 
Ok(Extension::KHRPortabilityEnumeration)0
,
490
3
            "VK_KHR_maintenance4" => 
Ok(Extension::KHRMaintenance4)0
,
491
3
            "VK_KHR_ray_tracing_position_fetch" => 
Ok(Extension::KHRRayTracingPositionFetch)0
,
492
3
            "VK_ANDROID_native_buffer" => 
Ok(Extension::ANDROIDNativeBuffer)0
,
493
3
            "VK_EXT_debug_report" => 
Ok(Extension::EXTDebugReport)0
,
494
3
            "VK_NV_glsl_shader" => 
Ok(Extension::NVGlslShader)0
,
495
3
            "VK_EXT_depth_range_unrestricted" => 
Ok(Extension::EXTDepthRangeUnrestricted)0
,
496
3
            "VK_IMG_filter_cubic" => 
Ok(Extension::IMGFilterCubic)0
,
497
3
            "VK_AMD_rasterization_order" => 
Ok(Extension::AMDRasterizationOrder)0
,
498
3
            "VK_AMD_shader_trinary_minmax" => 
Ok(Extension::AMDShaderTrinaryMinmax)0
,
499
3
            "VK_AMD_shader_explicit_vertex_parameter" => {
500
0
                Ok(Extension::AMDShaderExplicitVertexParameter)
501
            }
502
3
            "VK_EXT_debug_marker" => 
Ok(Extension::EXTDebugMarker)0
,
503
3
            "VK_AMD_gcn_shader" => 
Ok(Extension::AMDGcnShader)0
,
504
3
            "VK_NV_dedicated_allocation" => 
Ok(Extension::NVDedicatedAllocation)0
,
505
3
            "VK_EXT_transform_feedback" => 
Ok(Extension::EXTTransformFeedback)0
,
506
3
            "VK_NVX_binary_import" => 
Ok(Extension::NVXBinaryImport)0
,
507
3
            "VK_NVX_image_view_handle" => 
Ok(Extension::NVXImageViewHandle)0
,
508
3
            "VK_AMD_draw_indirect_count" => 
Ok(Extension::AMDDrawIndirectCount)0
,
509
3
            "VK_AMD_negative_viewport_height" => 
Ok(Extension::AMDNegativeViewportHeight)0
,
510
3
            "VK_AMD_gpu_shader_half_float" => 
Ok(Extension::AMDGpuShaderHalfFloat)0
,
511
3
            "VK_AMD_shader_ballot" => 
Ok(Extension::AMDShaderBallot)0
,
512
3
            "VK_EXT_video_encode_h264" => 
Ok(Extension::EXTVideoEncodeH264)0
,
513
3
            "VK_EXT_video_encode_h265" => 
Ok(Extension::EXTVideoEncodeH265)0
,
514
3
            "VK_AMD_texture_gather_bias_lod" => 
Ok(Extension::AMDTextureGatherBiasLod)0
,
515
3
            "VK_AMD_shader_info" => 
Ok(Extension::AMDShaderInfo)0
,
516
3
            "VK_AMD_shader_image_load_store_lod" => 
Ok(Extension::AMDShaderImageLoadStoreLod)0
,
517
3
            "VK_GGP_stream_descriptor_surface" => 
Ok(Extension::GGPStreamDescriptorSurface)0
,
518
3
            "VK_NV_corner_sampled_image" => 
Ok(Extension::NVCornerSampledImage)0
,
519
3
            "VK_IMG_format_pvrtc" => 
Ok(Extension::IMGFormatPvrtc)0
,
520
3
            "VK_NV_external_memory_capabilities" => 
Ok(Extension::NVExternalMemoryCapabilities)0
,
521
3
            "VK_NV_external_memory" => 
Ok(Extension::NVExternalMemory)0
,
522
3
            "VK_NV_external_memory_win32" => 
Ok(Extension::NVExternalMemoryWin32)0
,
523
3
            "VK_NV_win32_keyed_mutex" => 
Ok(Extension::NVWin32KeyedMutex)0
,
524
3
            "VK_EXT_validation_flags" => 
Ok(Extension::EXTValidationFlags)0
,
525
3
            "VK_NN_vi_surface" => 
Ok(Extension::NNViSurface)0
,
526
3
            "VK_EXT_shader_subgroup_ballot" => 
Ok(Extension::EXTShaderSubgroupBallot)0
,
527
3
            "VK_EXT_shader_subgroup_vote" => 
Ok(Extension::EXTShaderSubgroupVote)0
,
528
3
            "VK_EXT_texture_compression_astc_hdr" => 
Ok(Extension::EXTTextureCompressionAstcHdr)0
,
529
3
            "VK_EXT_astc_decode_mode" => 
Ok(Extension::EXTAstcDecodeMode)0
,
530
3
            "VK_EXT_pipeline_robustness" => 
Ok(Extension::EXTPipelineRobustness)0
,
531
3
            "VK_EXT_conditional_rendering" => 
Ok(Extension::EXTConditionalRendering)0
,
532
3
            "VK_NV_clip_space_w_scaling" => 
Ok(Extension::NVClipSpaceWScaling)0
,
533
3
            "VK_EXT_direct_mode_display" => 
Ok(Extension::EXTDirectModeDisplay)0
,
534
3
            "VK_EXT_acquire_xlib_display" => 
Ok(Extension::EXTAcquireXlibDisplay)0
,
535
3
            "VK_EXT_display_surface_counter" => 
Ok(Extension::EXTDisplaySurfaceCounter)0
,
536
3
            "VK_EXT_display_control" => 
Ok(Extension::EXTDisplayControl)0
,
537
3
            "VK_GOOGLE_display_timing" => 
Ok(Extension::GOOGLEDisplayTiming)0
,
538
3
            "VK_NV_sample_mask_override_coverage" => 
Ok(Extension::NVSampleMaskOverrideCoverage)0
,
539
3
            "VK_NV_geometry_shader_passthrough" => 
Ok(Extension::NVGeometryShaderPassthrough)0
,
540
3
            "VK_NV_viewport_array2" => 
Ok(Extension::NVViewportArray2)0
,
541
3
            "VK_NVX_multiview_per_view_attributes" => 
Ok(Extension::NVXMultiviewPerViewAttributes)0
,
542
3
            "VK_NV_viewport_swizzle" => 
Ok(Extension::NVViewportSwizzle)0
,
543
3
            "VK_EXT_discard_rectangles" => 
Ok(Extension::EXTDiscardRectangles)0
,
544
3
            "VK_EXT_conservative_rasterization" => 
Ok(Extension::EXTConservativeRasterization)0
,
545
3
            "VK_EXT_depth_clip_enable" => 
Ok(Extension::EXTDepthClipEnable)0
,
546
3
            "VK_EXT_swapchain_colorspace" => 
Ok(Extension::EXTSwapchainColorspace)0
,
547
3
            "VK_EXT_hdr_metadata" => 
Ok(Extension::EXTHdrMetadata)0
,
548
3
            "VK_MVK_ios_surface" => 
Ok(Extension::MVKIosSurface)0
,
549
3
            "VK_MVK_macos_surface" => 
Ok(Extension::MVKMacosSurface)0
,
550
3
            "VK_EXT_external_memory_dma_buf" => 
Ok(Extension::EXTExternalMemoryDmaBuf)0
,
551
3
            "VK_EXT_queue_family_foreign" => 
Ok(Extension::EXTQueueFamilyForeign)0
,
552
3
            "VK_EXT_debug_utils" => 
Ok(Extension::EXTDebugUtils)0
,
553
3
            "VK_ANDROID_external_memory_android_hardware_buffer" => {
554
0
                Ok(Extension::ANDROIDExternalMemoryAndroidHardwareBuffer)
555
            }
556
3
            "VK_EXT_sampler_filter_minmax" => 
Ok(Extension::EXTSamplerFilterMinmax)0
,
557
3
            "VK_AMD_gpu_shader_int16" => 
Ok(Extension::AMDGpuShaderInt16)0
,
558
3
            "VK_AMD_mixed_attachment_samples" => 
Ok(Extension::AMDMixedAttachmentSamples)0
,
559
3
            "VK_AMD_shader_fragment_mask" => 
Ok(Extension::AMDShaderFragmentMask)0
,
560
3
            "VK_EXT_inline_uniform_block" => 
Ok(Extension::EXTInlineUniformBlock)0
,
561
3
            "VK_EXT_shader_stencil_export" => 
Ok(Extension::EXTShaderStencilExport)0
,
562
3
            "VK_EXT_sample_locations" => 
Ok(Extension::EXTSampleLocations)0
,
563
3
            "VK_EXT_blend_operation_advanced" => 
Ok(Extension::EXTBlendOperationAdvanced)0
,
564
3
            "VK_NV_fragment_coverage_to_color" => 
Ok(Extension::NVFragmentCoverageToColor)0
,
565
3
            "VK_NV_framebuffer_mixed_samples" => 
Ok(Extension::NVFramebufferMixedSamples)0
,
566
3
            "VK_NV_fill_rectangle" => 
Ok(Extension::NVFillRectangle)0
,
567
3
            "VK_NV_shader_sm_builtins" => 
Ok(Extension::NVShaderSmBuiltins)0
,
568
3
            "VK_EXT_post_depth_coverage" => 
Ok(Extension::EXTPostDepthCoverage)0
,
569
3
            "VK_EXT_image_drm_format_modifier" => 
Ok(Extension::EXTImageDrmFormatModifier)0
,
570
3
            "VK_EXT_validation_cache" => 
Ok(Extension::EXTValidationCache)0
,
571
3
            "VK_EXT_descriptor_indexing" => 
Ok(Extension::EXTDescriptorIndexing)0
,
572
3
            "VK_EXT_shader_viewport_index_layer" => 
Ok(Extension::EXTShaderViewportIndexLayer)0
,
573
3
            "VK_NV_shading_rate_image" => 
Ok(Extension::NVShadingRateImage)0
,
574
3
            "VK_NV_ray_tracing" => 
Ok(Extension::NVRayTracing)0
,
575
3
            "VK_NV_representative_fragment_test" => 
Ok(Extension::NVRepresentativeFragmentTest)0
,
576
3
            "VK_EXT_filter_cubic" => 
Ok(Extension::EXTFilterCubic)0
,
577
3
            "VK_QCOM_render_pass_shader_resolve" => 
Ok(Extension::QCOMRenderPassShaderResolve)0
,
578
3
            "VK_EXT_global_priority" => 
Ok(Extension::EXTGlobalPriority)0
,
579
3
            "VK_EXT_external_memory_host" => 
Ok(Extension::EXTExternalMemoryHost)0
,
580
3
            "VK_AMD_buffer_marker" => 
Ok(Extension::AMDBufferMarker)0
,
581
3
            "VK_AMD_pipeline_compiler_control" => 
Ok(Extension::AMDPipelineCompilerControl)0
,
582
3
            "VK_EXT_calibrated_timestamps" => 
Ok(Extension::EXTCalibratedTimestamps)0
,
583
3
            "VK_AMD_shader_core_properties" => 
Ok(Extension::AMDShaderCoreProperties)0
,
584
3
            "VK_AMD_memory_overallocation_behavior" => {
585
0
                Ok(Extension::AMDMemoryOverallocationBehavior)
586
            }
587
3
            "VK_EXT_vertex_attribute_divisor" => 
Ok(Extension::EXTVertexAttributeDivisor)0
,
588
3
            "VK_GGP_frame_token" => 
Ok(Extension::GGPFrameToken)0
,
589
3
            "VK_EXT_pipeline_creation_feedback" => 
Ok(Extension::EXTPipelineCreationFeedback)0
,
590
3
            "VK_NV_shader_subgroup_partitioned" => 
Ok(Extension::NVShaderSubgroupPartitioned)0
,
591
3
            "VK_NV_compute_shader_derivatives" => 
Ok(Extension::NVComputeShaderDerivatives)0
,
592
3
            "VK_NV_mesh_shader" => 
Ok(Extension::NVMeshShader)0
,
593
3
            "VK_NV_fragment_shader_barycentric" => 
Ok(Extension::NVFragmentShaderBarycentric)0
,
594
3
            "VK_NV_shader_image_footprint" => 
Ok(Extension::NVShaderImageFootprint)0
,
595
3
            "VK_NV_scissor_exclusive" => 
Ok(Extension::NVScissorExclusive)0
,
596
3
            "VK_NV_device_diagnostic_checkpoints" => 
Ok(Extension::NVDeviceDiagnosticCheckpoints)0
,
597
3
            "VK_INTEL_shader_integer_functions2" => 
Ok(Extension::INTELShaderIntegerFunctions2)0
,
598
3
            "VK_INTEL_performance_query" => 
Ok(Extension::INTELPerformanceQuery)0
,
599
3
            "VK_EXT_pci_bus_info" => 
Ok(Extension::EXTPciBusInfo)0
,
600
3
            "VK_AMD_display_native_hdr" => 
Ok(Extension::AMDDisplayNativeHdr)0
,
601
3
            "VK_FUCHSIA_imagepipe_surface" => 
Ok(Extension::FUCHSIAImagepipeSurface)0
,
602
3
            "VK_EXT_metal_surface" => 
Ok(Extension::EXTMetalSurface)0
,
603
3
            "VK_EXT_fragment_density_map" => 
Ok(Extension::EXTFragmentDensityMap)0
,
604
3
            "VK_EXT_scalar_block_layout" => 
Ok(Extension::EXTScalarBlockLayout)0
,
605
3
            "VK_GOOGLE_hlsl_functionality1" => 
Ok(Extension::GOOGLEHlslFunctionality1)0
,
606
3
            "VK_GOOGLE_decorate_string" => 
Ok(Extension::GOOGLEDecorateString)0
,
607
3
            "VK_EXT_subgroup_size_control" => 
Ok(Extension::EXTSubgroupSizeControl)0
,
608
3
            "VK_AMD_shader_core_properties2" => 
Ok(Extension::AMDShaderCoreProperties2)0
,
609
3
            "VK_AMD_device_coherent_memory" => 
Ok(Extension::AMDDeviceCoherentMemory)0
,
610
3
            "VK_EXT_shader_image_atomic_int64" => 
Ok(Extension::EXTShaderImageAtomicInt64)0
,
611
3
            "VK_EXT_memory_budget" => 
Ok(Extension::EXTMemoryBudget)0
,
612
3
            "VK_EXT_memory_priority" => 
Ok(Extension::EXTMemoryPriority)0
,
613
3
            "VK_NV_dedicated_allocation_image_aliasing" => {
614
0
                Ok(Extension::NVDedicatedAllocationImageAliasing)
615
            }
616
3
            "VK_EXT_buffer_device_address" => 
Ok(Extension::EXTBufferDeviceAddress)0
,
617
3
            "VK_EXT_tooling_info" => 
Ok(Extension::EXTToolingInfo)0
,
618
3
            "VK_EXT_separate_stencil_usage" => 
Ok(Extension::EXTSeparateStencilUsage)0
,
619
3
            "VK_EXT_validation_features" => 
Ok(Extension::EXTValidationFeatures)0
,
620
3
            "VK_NV_cooperative_matrix" => 
Ok(Extension::NVCooperativeMatrix)0
,
621
3
            "VK_NV_coverage_reduction_mode" => 
Ok(Extension::NVCoverageReductionMode)0
,
622
3
            "VK_EXT_fragment_shader_interlock" => 
Ok(Extension::EXTFragmentShaderInterlock)0
,
623
3
            "VK_EXT_ycbcr_image_arrays" => 
Ok(Extension::EXTYcbcrImageArrays)0
,
624
3
            "VK_EXT_provoking_vertex" => 
Ok(Extension::EXTProvokingVertex)0
,
625
3
            "VK_EXT_full_screen_exclusive" => 
Ok(Extension::EXTFullScreenExclusive)0
,
626
3
            "VK_EXT_headless_surface" => 
Ok(Extension::EXTHeadlessSurface)0
,
627
3
            "VK_EXT_line_rasterization" => 
Ok(Extension::EXTLineRasterization)0
,
628
3
            "VK_EXT_shader_atomic_float" => 
Ok(Extension::EXTShaderAtomicFloat)0
,
629
3
            "VK_EXT_host_query_reset" => 
Ok(Extension::EXTHostQueryReset)0
,
630
3
            "VK_EXT_index_type_uint8" => 
Ok(Extension::EXTIndexTypeUint8)0
,
631
3
            "VK_EXT_extended_dynamic_state" => 
Ok(Extension::EXTExtendedDynamicState)0
,
632
3
            "VK_EXT_shader_atomic_float2" => 
Ok(Extension::EXTShaderAtomicFloat2)0
,
633
3
            "VK_EXT_surface_maintenance1" => 
Ok(Extension::EXTSurfaceMaintenance1)0
,
634
3
            "VK_EXT_swapchain_maintenance1" => 
Ok(Extension::EXTSwapchainMaintenance1)0
,
635
3
            "VK_EXT_shader_demote_to_helper_invocation" => {
636
0
                Ok(Extension::EXTShaderDemoteToHelperInvocation)
637
            }
638
3
            "VK_NV_device_generated_commands" => 
Ok(Extension::NVDeviceGeneratedCommands)0
,
639
3
            "VK_NV_inherited_viewport_scissor" => 
Ok(Extension::NVInheritedViewportScissor)0
,
640
3
            "VK_EXT_texel_buffer_alignment" => 
Ok(Extension::EXTTexelBufferAlignment)0
,
641
3
            "VK_QCOM_render_pass_transform" => 
Ok(Extension::QCOMRenderPassTransform)0
,
642
3
            "VK_EXT_device_memory_report" => 
Ok(Extension::EXTDeviceMemoryReport)0
,
643
3
            "VK_EXT_acquire_drm_display" => 
Ok(Extension::EXTAcquireDrmDisplay)0
,
644
3
            "VK_EXT_robustness2" => 
Ok(Extension::EXTRobustness2)0
,
645
3
            "VK_EXT_custom_border_color" => 
Ok(Extension::EXTCustomBorderColor)0
,
646
3
            "VK_GOOGLE_user_type" => 
Ok(Extension::GOOGLEUserType)0
,
647
3
            "VK_NV_present_barrier" => 
Ok(Extension::NVPresentBarrier)0
,
648
3
            "VK_EXT_private_data" => 
Ok(Extension::EXTPrivateData)0
,
649
3
            "VK_EXT_pipeline_creation_cache_control" => {
650
0
                Ok(Extension::EXTPipelineCreationCacheControl)
651
            }
652
3
            "VK_NV_device_diagnostics_config" => 
Ok(Extension::NVDeviceDiagnosticsConfig)0
,
653
3
            "VK_QCOM_render_pass_store_ops" => 
Ok(Extension::QCOMRenderPassStoreOps)0
,
654
3
            "VK_NV_low_latency" => 
Ok(Extension::NVLowLatency)0
,
655
3
            "VK_EXT_metal_objects" => 
Ok(Extension::EXTMetalObjects)0
,
656
3
            "VK_EXT_descriptor_buffer" => 
Ok(Extension::EXTDescriptorBuffer)0
,
657
3
            "VK_EXT_graphics_pipeline_library" => 
Ok(Extension::EXTGraphicsPipelineLibrary)0
,
658
3
            "VK_AMD_shader_early_and_late_fragment_tests" => {
659
0
                Ok(Extension::AMDShaderEarlyAndLateFragmentTests)
660
            }
661
3
            "VK_NV_fragment_shading_rate_enums" => 
Ok(Extension::NVFragmentShadingRateEnums)0
,
662
3
            "VK_NV_ray_tracing_motion_blur" => 
Ok(Extension::NVRayTracingMotionBlur)0
,
663
3
            "VK_EXT_ycbcr_2plane_444_formats" => 
Ok(Extension::EXTYcbcr2plane444Formats)0
,
664
3
            "VK_EXT_fragment_density_map2" => 
Ok(Extension::EXTFragmentDensityMap2)0
,
665
3
            "VK_QCOM_rotated_copy_commands" => 
Ok(Extension::QCOMRotatedCopyCommands)0
,
666
3
            "VK_EXT_image_robustness" => 
Ok(Extension::EXTImageRobustness)0
,
667
3
            "VK_EXT_image_compression_control" => 
Ok(Extension::EXTImageCompressionControl)0
,
668
3
            "VK_EXT_attachment_feedback_loop_layout" => {
669
0
                Ok(Extension::EXTAttachmentFeedbackLoopLayout)
670
            }
671
3
            "VK_EXT_4444_formats" => 
Ok(Extension::EXT4444Formats)0
,
672
3
            "VK_EXT_device_fault" => 
Ok(Extension::EXTDeviceFault)0
,
673
3
            "VK_ARM_rasterization_order_attachment_access" => {
674
0
                Ok(Extension::ARMRasterizationOrderAttachmentAccess)
675
            }
676
3
            "VK_EXT_rgba10x6_formats" => 
Ok(Extension::EXTRgba10x6Formats)0
,
677
3
            "VK_NV_acquire_winrt_display" => 
Ok(Extension::NVAcquireWinrtDisplay)0
,
678
3
            "VK_EXT_directfb_surface" => 
Ok(Extension::EXTDirectfbSurface)0
,
679
3
            "VK_VALVE_mutable_descriptor_type" => 
Ok(Extension::VALVEMutableDescriptorType)0
,
680
3
            "VK_EXT_vertex_input_dynamic_state" => 
Ok(Extension::EXTVertexInputDynamicState)0
,
681
3
            "VK_EXT_physical_device_drm" => 
Ok(Extension::EXTPhysicalDeviceDrm)0
,
682
3
            "VK_EXT_device_address_binding_report" => 
Ok(Extension::EXTDeviceAddressBindingReport)0
,
683
3
            "VK_EXT_depth_clip_control" => 
Ok(Extension::EXTDepthClipControl)0
,
684
3
            "VK_EXT_primitive_topology_list_restart" => {
685
0
                Ok(Extension::EXTPrimitiveTopologyListRestart)
686
            }
687
3
            "VK_FUCHSIA_external_memory" => 
Ok(Extension::FUCHSIAExternalMemory)0
,
688
3
            "VK_FUCHSIA_external_semaphore" => 
Ok(Extension::FUCHSIAExternalSemaphore)0
,
689
3
            "VK_FUCHSIA_buffer_collection" => 
Ok(Extension::FUCHSIABufferCollection)0
,
690
3
            "VK_HUAWEI_subpass_shading" => 
Ok(Extension::HUAWEISubpassShading)0
,
691
3
            "VK_HUAWEI_invocation_mask" => 
Ok(Extension::HUAWEIInvocationMask)0
,
692
3
            "VK_NV_external_memory_rdma" => 
Ok(Extension::NVExternalMemoryRdma)0
,
693
3
            "VK_EXT_pipeline_properties" => 
Ok(Extension::EXTPipelineProperties)0
,
694
3
            "VK_EXT_multisampled_render_to_single_sampled" => {
695
0
                Ok(Extension::EXTMultisampledRenderToSingleSampled)
696
            }
697
3
            "VK_EXT_extended_dynamic_state2" => 
Ok(Extension::EXTExtendedDynamicState2)0
,
698
3
            "VK_QNX_screen_surface" => 
Ok(Extension::QNXScreenSurface)0
,
699
3
            "VK_EXT_color_write_enable" => 
Ok(Extension::EXTColorWriteEnable)0
,
700
3
            "VK_EXT_primitives_generated_query" => 
Ok(Extension::EXTPrimitivesGeneratedQuery)0
,
701
3
            "VK_EXT_global_priority_query" => 
Ok(Extension::EXTGlobalPriorityQuery)0
,
702
3
            "VK_EXT_image_view_min_lod" => 
Ok(Extension::EXTImageViewMinLod)0
,
703
3
            "VK_EXT_multi_draw" => 
Ok(Extension::EXTMultiDraw)0
,
704
3
            "VK_EXT_image_2d_view_of_3d" => 
Ok(Extension::EXTImage2dViewOf3d)0
,
705
3
            "VK_EXT_shader_tile_image" => 
Ok(Extension::EXTShaderTileImage)0
,
706
3
            "VK_EXT_opacity_micromap" => 
Ok(Extension::EXTOpacityMicromap)0
,
707
3
            "VK_NV_displacement_micromap" => 
Ok(Extension::NVDisplacementMicromap)0
,
708
3
            "VK_EXT_load_store_op_none" => 
Ok(Extension::EXTLoadStoreOpNone)0
,
709
3
            "VK_HUAWEI_cluster_culling_shader" => 
Ok(Extension::HUAWEIClusterCullingShader)0
,
710
3
            "VK_EXT_border_color_swizzle" => 
Ok(Extension::EXTBorderColorSwizzle)0
,
711
3
            "VK_EXT_pageable_device_local_memory" => 
Ok(Extension::EXTPageableDeviceLocalMemory)0
,
712
3
            "VK_ARM_shader_core_properties" => 
Ok(Extension::ARMShaderCoreProperties)0
,
713
3
            "VK_EXT_image_sliced_view_of_3d" => 
Ok(Extension::EXTImageSlicedViewOf3d)0
,
714
3
            "VK_VALVE_descriptor_set_host_mapping" => 
Ok(Extension::VALVEDescriptorSetHostMapping)0
,
715
3
            "VK_EXT_depth_clamp_zero_one" => 
Ok(Extension::EXTDepthClampZeroOne)0
,
716
3
            "VK_EXT_non_seamless_cube_map" => 
Ok(Extension::EXTNonSeamlessCubeMap)0
,
717
3
            "VK_QCOM_fragment_density_map_offset" => 
Ok(Extension::QCOMFragmentDensityMapOffset)0
,
718
3
            "VK_NV_copy_memory_indirect" => 
Ok(Extension::NVCopyMemoryIndirect)0
,
719
3
            "VK_NV_memory_decompression" => 
Ok(Extension::NVMemoryDecompression)0
,
720
3
            "VK_NV_linear_color_attachment" => 
Ok(Extension::NVLinearColorAttachment)0
,
721
3
            "VK_GOOGLE_surfaceless_query" => 
Ok(Extension::GOOGLESurfacelessQuery)0
,
722
3
            "VK_EXT_image_compression_control_swapchain" => {
723
0
                Ok(Extension::EXTImageCompressionControlSwapchain)
724
            }
725
3
            "VK_QCOM_image_processing" => 
Ok(Extension::QCOMImageProcessing)0
,
726
3
            "VK_EXT_extended_dynamic_state3" => 
Ok(Extension::EXTExtendedDynamicState3)0
,
727
3
            "VK_EXT_subpass_merge_feedback" => 
Ok(Extension::EXTSubpassMergeFeedback)0
,
728
3
            "VK_LUNARG_direct_driver_loading" => 
Ok(Extension::LUNARGDirectDriverLoading)0
,
729
3
            "VK_EXT_shader_module_identifier" => 
Ok(Extension::EXTShaderModuleIdentifier)0
,
730
3
            "VK_EXT_rasterization_order_attachment_access" => {
731
0
                Ok(Extension::EXTRasterizationOrderAttachmentAccess)
732
            }
733
3
            "VK_NV_optical_flow" => 
Ok(Extension::NVOpticalFlow)0
,
734
3
            "VK_EXT_legacy_dithering" => 
Ok(Extension::EXTLegacyDithering)0
,
735
3
            "VK_EXT_pipeline_protected_access" => 
Ok(Extension::EXTPipelineProtectedAccess)0
,
736
3
            "VK_EXT_shader_object" => 
Ok(Extension::EXTShaderObject)0
,
737
3
            "VK_QCOM_tile_properties" => 
Ok(Extension::QCOMTileProperties)0
,
738
3
            "VK_SEC_amigo_profiling" => 
Ok(Extension::SECAmigoProfiling)0
,
739
3
            "VK_QCOM_multiview_per_view_viewports" => 
Ok(Extension::QCOMMultiviewPerViewViewports)0
,
740
3
            "VK_NV_ray_tracing_invocation_reorder" => 
Ok(Extension::NVRayTracingInvocationReorder)0
,
741
3
            "VK_EXT_mutable_descriptor_type" => 
Ok(Extension::EXTMutableDescriptorType)0
,
742
3
            "VK_ARM_shader_core_builtins" => 
Ok(Extension::ARMShaderCoreBuiltins)0
,
743
3
            "VK_EXT_pipeline_library_group_handles" => {
744
0
                Ok(Extension::EXTPipelineLibraryGroupHandles)
745
            }
746
3
            "VK_EXT_dynamic_rendering_unused_attachments" => {
747
0
                Ok(Extension::EXTDynamicRenderingUnusedAttachments)
748
            }
749
3
            "VK_QCOM_multiview_per_view_render_areas" => {
750
0
                Ok(Extension::QCOMMultiviewPerViewRenderAreas)
751
            }
752
3
            "VK_EXT_attachment_feedback_loop_dynamic_state" => {
753
0
                Ok(Extension::EXTAttachmentFeedbackLoopDynamicState)
754
            }
755
3
            "VK_KHR_acceleration_structure" => 
Ok(Extension::KHRAccelerationStructure)0
,
756
3
            "VK_KHR_ray_tracing_pipeline" => 
Ok(Extension::KHRRayTracingPipeline)0
,
757
3
            "VK_KHR_ray_query" => 
Ok(Extension::KHRRayQuery)0
,
758
3
            "VK_EXT_mesh_shader" => 
Ok(Extension::EXTMeshShader)0
,
759
3
            _ => Err(TryFromExtensionError::UnknownExtension(value.to_owned())),
760
        }
761
44
    }
762
}
763
764
impl From<Extension> for &'static str {
765
11
    fn from(value: Extension) -> &'static str {
766
11
        match value {
767
0
            Extension::KHRSurface => "VK_KHR_surface",
768
4
            Extension::KHRSwapchain => "VK_KHR_swapchain",
769
0
            Extension::KHRDisplay => "VK_KHR_display",
770
0
            Extension::KHRDisplaySwapchain => "VK_KHR_display_swapchain",
771
0
            Extension::KHRXlibSurface => "VK_KHR_xlib_surface",
772
0
            Extension::KHRXcbSurface => "VK_KHR_xcb_surface",
773
0
            Extension::KHRWaylandSurface => "VK_KHR_wayland_surface",
774
0
            Extension::KHRAndroidSurface => "VK_KHR_android_surface",
775
0
            Extension::KHRWin32Surface => "VK_KHR_win32_surface",
776
0
            Extension::KHRSamplerMirrorClampToEdge => "VK_KHR_sampler_mirror_clamp_to_edge",
777
0
            Extension::KHRVideoQueue => "VK_KHR_video_queue",
778
0
            Extension::KHRVideoDecodeQueue => "VK_KHR_video_decode_queue",
779
0
            Extension::KHRVideoDecodeH264 => "VK_KHR_video_decode_h264",
780
0
            Extension::KHRDynamicRendering => "VK_KHR_dynamic_rendering",
781
0
            Extension::KHRMultiview => "VK_KHR_multiview",
782
0
            Extension::KHRGetPhysicalDeviceProperties2 => "VK_KHR_get_physical_device_properties2",
783
0
            Extension::KHRDeviceGroup => "VK_KHR_device_group",
784
0
            Extension::KHRShaderDrawParameters => "VK_KHR_shader_draw_parameters",
785
0
            Extension::KHRMaintenance1 => "VK_KHR_maintenance1",
786
0
            Extension::KHRDeviceGroupCreation => "VK_KHR_device_group_creation",
787
0
            Extension::KHRExternalMemoryCapabilities => "VK_KHR_external_memory_capabilities",
788
6
            Extension::KHRExternalMemory => "VK_KHR_external_memory",
789
0
            Extension::KHRExternalMemoryWin32 => "VK_KHR_external_memory_win32",
790
0
            Extension::KHRExternalMemoryFd => "VK_KHR_external_memory_fd",
791
0
            Extension::KHRWin32KeyedMutex => "VK_KHR_win32_keyed_mutex",
792
0
            Extension::KHRExternalSemaphoreCapabilities => "VK_KHR_external_semaphore_capabilities",
793
0
            Extension::KHRExternalSemaphore => "VK_KHR_external_semaphore",
794
0
            Extension::KHRExternalSemaphoreWin32 => "VK_KHR_external_semaphore_win32",
795
0
            Extension::KHRExternalSemaphoreFd => "VK_KHR_external_semaphore_fd",
796
0
            Extension::KHRPushDescriptor => "VK_KHR_push_descriptor",
797
0
            Extension::KHRShaderFloat16Int8 => "VK_KHR_shader_float16_int8",
798
0
            Extension::KHR16bitStorage => "VK_KHR_16bit_storage",
799
0
            Extension::KHRIncrementalPresent => "VK_KHR_incremental_present",
800
0
            Extension::KHRDescriptorUpdateTemplate => "VK_KHR_descriptor_update_template",
801
0
            Extension::KHRImagelessFramebuffer => "VK_KHR_imageless_framebuffer",
802
0
            Extension::KHRCreateRenderpass2 => "VK_KHR_create_renderpass2",
803
0
            Extension::KHRSharedPresentableImage => "VK_KHR_shared_presentable_image",
804
0
            Extension::KHRExternalFenceCapabilities => "VK_KHR_external_fence_capabilities",
805
0
            Extension::KHRExternalFence => "VK_KHR_external_fence",
806
0
            Extension::KHRExternalFenceWin32 => "VK_KHR_external_fence_win32",
807
0
            Extension::KHRExternalFenceFd => "VK_KHR_external_fence_fd",
808
0
            Extension::KHRPerformanceQuery => "VK_KHR_performance_query",
809
0
            Extension::KHRMaintenance2 => "VK_KHR_maintenance2",
810
0
            Extension::KHRGetSurfaceCapabilities2 => "VK_KHR_get_surface_capabilities2",
811
0
            Extension::KHRVariablePointers => "VK_KHR_variable_pointers",
812
0
            Extension::KHRGetDisplayProperties2 => "VK_KHR_get_display_properties2",
813
0
            Extension::KHRDedicatedAllocation => "VK_KHR_dedicated_allocation",
814
0
            Extension::KHRStorageBufferStorageClass => "VK_KHR_storage_buffer_storage_class",
815
0
            Extension::KHRRelaxedBlockLayout => "VK_KHR_relaxed_block_layout",
816
0
            Extension::KHRGetMemoryRequirements2 => "VK_KHR_get_memory_requirements2",
817
0
            Extension::KHRImageFormatList => "VK_KHR_image_format_list",
818
1
            Extension::KHRSamplerYcbcrConversion => "VK_KHR_sampler_ycbcr_conversion",
819
0
            Extension::KHRBindMemory2 => "VK_KHR_bind_memory2",
820
0
            Extension::KHRPortabilitySubset => "VK_KHR_portability_subset",
821
0
            Extension::KHRMaintenance3 => "VK_KHR_maintenance3",
822
0
            Extension::KHRDrawIndirectCount => "VK_KHR_draw_indirect_count",
823
0
            Extension::KHRShaderSubgroupExtendedTypes => "VK_KHR_shader_subgroup_extended_types",
824
0
            Extension::KHR8bitStorage => "VK_KHR_8bit_storage",
825
0
            Extension::KHRShaderAtomicInt64 => "VK_KHR_shader_atomic_int64",
826
0
            Extension::KHRShaderClock => "VK_KHR_shader_clock",
827
0
            Extension::KHRVideoDecodeH265 => "VK_KHR_video_decode_h265",
828
0
            Extension::KHRGlobalPriority => "VK_KHR_global_priority",
829
0
            Extension::KHRDriverProperties => "VK_KHR_driver_properties",
830
0
            Extension::KHRShaderFloatControls => "VK_KHR_shader_float_controls",
831
0
            Extension::KHRDepthStencilResolve => "VK_KHR_depth_stencil_resolve",
832
0
            Extension::KHRSwapchainMutableFormat => "VK_KHR_swapchain_mutable_format",
833
0
            Extension::KHRTimelineSemaphore => "VK_KHR_timeline_semaphore",
834
0
            Extension::KHRVulkanMemoryModel => "VK_KHR_vulkan_memory_model",
835
0
            Extension::KHRShaderTerminateInvocation => "VK_KHR_shader_terminate_invocation",
836
0
            Extension::KHRFragmentShadingRate => "VK_KHR_fragment_shading_rate",
837
0
            Extension::KHRSpirv14 => "VK_KHR_spirv_1_4",
838
0
            Extension::KHRSurfaceProtectedCapabilities => "VK_KHR_surface_protected_capabilities",
839
0
            Extension::KHRSeparateDepthStencilLayouts => "VK_KHR_separate_depth_stencil_layouts",
840
0
            Extension::KHRPresentWait => "VK_KHR_present_wait",
841
0
            Extension::KHRUniformBufferStandardLayout => "VK_KHR_uniform_buffer_standard_layout",
842
0
            Extension::KHRBufferDeviceAddress => "VK_KHR_buffer_device_address",
843
0
            Extension::KHRDeferredHostOperations => "VK_KHR_deferred_host_operations",
844
0
            Extension::KHRPipelineExecutableProperties => "VK_KHR_pipeline_executable_properties",
845
0
            Extension::KHRMapMemory2 => "VK_KHR_map_memory2",
846
0
            Extension::KHRShaderIntegerDotProduct => "VK_KHR_shader_integer_dot_product",
847
0
            Extension::KHRPipelineLibrary => "VK_KHR_pipeline_library",
848
0
            Extension::KHRShaderNonSemanticInfo => "VK_KHR_shader_non_semantic_info",
849
0
            Extension::KHRPresentId => "VK_KHR_present_id",
850
0
            Extension::KHRVideoEncodeQueue => "VK_KHR_video_encode_queue",
851
0
            Extension::KHRSynchronization2 => "VK_KHR_synchronization2",
852
0
            Extension::KHRFragmentShaderBarycentric => "VK_KHR_fragment_shader_barycentric",
853
            Extension::KHRShaderSubgroupUniformControlFlow => {
854
0
                "VK_KHR_shader_subgroup_uniform_control_flow"
855
            }
856
            Extension::KHRZeroInitializeWorkgroupMemory => {
857
0
                "VK_KHR_zero_initialize_workgroup_memory"
858
            }
859
            Extension::KHRWorkgroupMemoryExplicitLayout => {
860
0
                "VK_KHR_workgroup_memory_explicit_layout"
861
            }
862
0
            Extension::KHRCopyCommands2 => "VK_KHR_copy_commands2",
863
0
            Extension::KHRFormatFeatureFlags2 => "VK_KHR_format_feature_flags2",
864
0
            Extension::KHRRayTracingMaintenance1 => "VK_KHR_ray_tracing_maintenance1",
865
0
            Extension::KHRPortabilityEnumeration => "VK_KHR_portability_enumeration",
866
0
            Extension::KHRMaintenance4 => "VK_KHR_maintenance4",
867
0
            Extension::KHRRayTracingPositionFetch => "VK_KHR_ray_tracing_position_fetch",
868
0
            Extension::ANDROIDNativeBuffer => "VK_ANDROID_native_buffer",
869
0
            Extension::EXTDebugReport => "VK_EXT_debug_report",
870
0
            Extension::NVGlslShader => "VK_NV_glsl_shader",
871
0
            Extension::EXTDepthRangeUnrestricted => "VK_EXT_depth_range_unrestricted",
872
0
            Extension::IMGFilterCubic => "VK_IMG_filter_cubic",
873
0
            Extension::AMDRasterizationOrder => "VK_AMD_rasterization_order",
874
0
            Extension::AMDShaderTrinaryMinmax => "VK_AMD_shader_trinary_minmax",
875
            Extension::AMDShaderExplicitVertexParameter => {
876
0
                "VK_AMD_shader_explicit_vertex_parameter"
877
            }
878
0
            Extension::EXTDebugMarker => "VK_EXT_debug_marker",
879
0
            Extension::AMDGcnShader => "VK_AMD_gcn_shader",
880
0
            Extension::NVDedicatedAllocation => "VK_NV_dedicated_allocation",
881
0
            Extension::EXTTransformFeedback => "VK_EXT_transform_feedback",
882
0
            Extension::NVXBinaryImport => "VK_NVX_binary_import",
883
0
            Extension::NVXImageViewHandle => "VK_NVX_image_view_handle",
884
0
            Extension::AMDDrawIndirectCount => "VK_AMD_draw_indirect_count",
885
0
            Extension::AMDNegativeViewportHeight => "VK_AMD_negative_viewport_height",
886
0
            Extension::AMDGpuShaderHalfFloat => "VK_AMD_gpu_shader_half_float",
887
0
            Extension::AMDShaderBallot => "VK_AMD_shader_ballot",
888
0
            Extension::EXTVideoEncodeH264 => "VK_EXT_video_encode_h264",
889
0
            Extension::EXTVideoEncodeH265 => "VK_EXT_video_encode_h265",
890
0
            Extension::AMDTextureGatherBiasLod => "VK_AMD_texture_gather_bias_lod",
891
0
            Extension::AMDShaderInfo => "VK_AMD_shader_info",
892
0
            Extension::AMDShaderImageLoadStoreLod => "VK_AMD_shader_image_load_store_lod",
893
0
            Extension::GGPStreamDescriptorSurface => "VK_GGP_stream_descriptor_surface",
894
0
            Extension::NVCornerSampledImage => "VK_NV_corner_sampled_image",
895
0
            Extension::IMGFormatPvrtc => "VK_IMG_format_pvrtc",
896
0
            Extension::NVExternalMemoryCapabilities => "VK_NV_external_memory_capabilities",
897
0
            Extension::NVExternalMemory => "VK_NV_external_memory",
898
0
            Extension::NVExternalMemoryWin32 => "VK_NV_external_memory_win32",
899
0
            Extension::NVWin32KeyedMutex => "VK_NV_win32_keyed_mutex",
900
0
            Extension::EXTValidationFlags => "VK_EXT_validation_flags",
901
0
            Extension::NNViSurface => "VK_NN_vi_surface",
902
0
            Extension::EXTShaderSubgroupBallot => "VK_EXT_shader_subgroup_ballot",
903
0
            Extension::EXTShaderSubgroupVote => "VK_EXT_shader_subgroup_vote",
904
0
            Extension::EXTTextureCompressionAstcHdr => "VK_EXT_texture_compression_astc_hdr",
905
0
            Extension::EXTAstcDecodeMode => "VK_EXT_astc_decode_mode",
906
0
            Extension::EXTPipelineRobustness => "VK_EXT_pipeline_robustness",
907
0
            Extension::EXTConditionalRendering => "VK_EXT_conditional_rendering",
908
0
            Extension::NVClipSpaceWScaling => "VK_NV_clip_space_w_scaling",
909
0
            Extension::EXTDirectModeDisplay => "VK_EXT_direct_mode_display",
910
0
            Extension::EXTAcquireXlibDisplay => "VK_EXT_acquire_xlib_display",
911
0
            Extension::EXTDisplaySurfaceCounter => "VK_EXT_display_surface_counter",
912
0
            Extension::EXTDisplayControl => "VK_EXT_display_control",
913
0
            Extension::GOOGLEDisplayTiming => "VK_GOOGLE_display_timing",
914
0
            Extension::NVSampleMaskOverrideCoverage => "VK_NV_sample_mask_override_coverage",
915
0
            Extension::NVGeometryShaderPassthrough => "VK_NV_geometry_shader_passthrough",
916
0
            Extension::NVViewportArray2 => "VK_NV_viewport_array2",
917
0
            Extension::NVXMultiviewPerViewAttributes => "VK_NVX_multiview_per_view_attributes",
918
0
            Extension::NVViewportSwizzle => "VK_NV_viewport_swizzle",
919
0
            Extension::EXTDiscardRectangles => "VK_EXT_discard_rectangles",
920
0
            Extension::EXTConservativeRasterization => "VK_EXT_conservative_rasterization",
921
0
            Extension::EXTDepthClipEnable => "VK_EXT_depth_clip_enable",
922
0
            Extension::EXTSwapchainColorspace => "VK_EXT_swapchain_colorspace",
923
0
            Extension::EXTHdrMetadata => "VK_EXT_hdr_metadata",
924
0
            Extension::MVKIosSurface => "VK_MVK_ios_surface",
925
0
            Extension::MVKMacosSurface => "VK_MVK_macos_surface",
926
0
            Extension::EXTExternalMemoryDmaBuf => "VK_EXT_external_memory_dma_buf",
927
0
            Extension::EXTQueueFamilyForeign => "VK_EXT_queue_family_foreign",
928
0
            Extension::EXTDebugUtils => "VK_EXT_debug_utils",
929
            Extension::ANDROIDExternalMemoryAndroidHardwareBuffer => {
930
0
                "VK_ANDROID_external_memory_android_hardware_buffer"
931
            }
932
0
            Extension::EXTSamplerFilterMinmax => "VK_EXT_sampler_filter_minmax",
933
0
            Extension::AMDGpuShaderInt16 => "VK_AMD_gpu_shader_int16",
934
0
            Extension::AMDMixedAttachmentSamples => "VK_AMD_mixed_attachment_samples",
935
0
            Extension::AMDShaderFragmentMask => "VK_AMD_shader_fragment_mask",
936
0
            Extension::EXTInlineUniformBlock => "VK_EXT_inline_uniform_block",
937
0
            Extension::EXTShaderStencilExport => "VK_EXT_shader_stencil_export",
938
0
            Extension::EXTSampleLocations => "VK_EXT_sample_locations",
939
0
            Extension::EXTBlendOperationAdvanced => "VK_EXT_blend_operation_advanced",
940
0
            Extension::NVFragmentCoverageToColor => "VK_NV_fragment_coverage_to_color",
941
0
            Extension::NVFramebufferMixedSamples => "VK_NV_framebuffer_mixed_samples",
942
0
            Extension::NVFillRectangle => "VK_NV_fill_rectangle",
943
0
            Extension::NVShaderSmBuiltins => "VK_NV_shader_sm_builtins",
944
0
            Extension::EXTPostDepthCoverage => "VK_EXT_post_depth_coverage",
945
0
            Extension::EXTImageDrmFormatModifier => "VK_EXT_image_drm_format_modifier",
946
0
            Extension::EXTValidationCache => "VK_EXT_validation_cache",
947
0
            Extension::EXTDescriptorIndexing => "VK_EXT_descriptor_indexing",
948
0
            Extension::EXTShaderViewportIndexLayer => "VK_EXT_shader_viewport_index_layer",
949
0
            Extension::NVShadingRateImage => "VK_NV_shading_rate_image",
950
0
            Extension::NVRayTracing => "VK_NV_ray_tracing",
951
0
            Extension::NVRepresentativeFragmentTest => "VK_NV_representative_fragment_test",
952
0
            Extension::EXTFilterCubic => "VK_EXT_filter_cubic",
953
0
            Extension::QCOMRenderPassShaderResolve => "VK_QCOM_render_pass_shader_resolve",
954
0
            Extension::EXTGlobalPriority => "VK_EXT_global_priority",
955
0
            Extension::EXTExternalMemoryHost => "VK_EXT_external_memory_host",
956
0
            Extension::AMDBufferMarker => "VK_AMD_buffer_marker",
957
0
            Extension::AMDPipelineCompilerControl => "VK_AMD_pipeline_compiler_control",
958
0
            Extension::EXTCalibratedTimestamps => "VK_EXT_calibrated_timestamps",
959
0
            Extension::AMDShaderCoreProperties => "VK_AMD_shader_core_properties",
960
0
            Extension::AMDMemoryOverallocationBehavior => "VK_AMD_memory_overallocation_behavior",
961
0
            Extension::EXTVertexAttributeDivisor => "VK_EXT_vertex_attribute_divisor",
962
0
            Extension::GGPFrameToken => "VK_GGP_frame_token",
963
0
            Extension::EXTPipelineCreationFeedback => "VK_EXT_pipeline_creation_feedback",
964
0
            Extension::NVShaderSubgroupPartitioned => "VK_NV_shader_subgroup_partitioned",
965
0
            Extension::NVComputeShaderDerivatives => "VK_NV_compute_shader_derivatives",
966
0
            Extension::NVMeshShader => "VK_NV_mesh_shader",
967
0
            Extension::NVFragmentShaderBarycentric => "VK_NV_fragment_shader_barycentric",
968
0
            Extension::NVShaderImageFootprint => "VK_NV_shader_image_footprint",
969
0
            Extension::NVScissorExclusive => "VK_NV_scissor_exclusive",
970
0
            Extension::NVDeviceDiagnosticCheckpoints => "VK_NV_device_diagnostic_checkpoints",
971
0
            Extension::INTELShaderIntegerFunctions2 => "VK_INTEL_shader_integer_functions2",
972
0
            Extension::INTELPerformanceQuery => "VK_INTEL_performance_query",
973
0
            Extension::EXTPciBusInfo => "VK_EXT_pci_bus_info",
974
0
            Extension::AMDDisplayNativeHdr => "VK_AMD_display_native_hdr",
975
0
            Extension::FUCHSIAImagepipeSurface => "VK_FUCHSIA_imagepipe_surface",
976
0
            Extension::EXTMetalSurface => "VK_EXT_metal_surface",
977
0
            Extension::EXTFragmentDensityMap => "VK_EXT_fragment_density_map",
978
0
            Extension::EXTScalarBlockLayout => "VK_EXT_scalar_block_layout",
979
0
            Extension::GOOGLEHlslFunctionality1 => "VK_GOOGLE_hlsl_functionality1",
980
0
            Extension::GOOGLEDecorateString => "VK_GOOGLE_decorate_string",
981
0
            Extension::EXTSubgroupSizeControl => "VK_EXT_subgroup_size_control",
982
0
            Extension::AMDShaderCoreProperties2 => "VK_AMD_shader_core_properties2",
983
0
            Extension::AMDDeviceCoherentMemory => "VK_AMD_device_coherent_memory",
984
0
            Extension::EXTShaderImageAtomicInt64 => "VK_EXT_shader_image_atomic_int64",
985
0
            Extension::EXTMemoryBudget => "VK_EXT_memory_budget",
986
0
            Extension::EXTMemoryPriority => "VK_EXT_memory_priority",
987
            Extension::NVDedicatedAllocationImageAliasing => {
988
0
                "VK_NV_dedicated_allocation_image_aliasing"
989
            }
990
0
            Extension::EXTBufferDeviceAddress => "VK_EXT_buffer_device_address",
991
0
            Extension::EXTToolingInfo => "VK_EXT_tooling_info",
992
0
            Extension::EXTSeparateStencilUsage => "VK_EXT_separate_stencil_usage",
993
0
            Extension::EXTValidationFeatures => "VK_EXT_validation_features",
994
0
            Extension::NVCooperativeMatrix => "VK_NV_cooperative_matrix",
995
0
            Extension::NVCoverageReductionMode => "VK_NV_coverage_reduction_mode",
996
0
            Extension::EXTFragmentShaderInterlock => "VK_EXT_fragment_shader_interlock",
997
0
            Extension::EXTYcbcrImageArrays => "VK_EXT_ycbcr_image_arrays",
998
0
            Extension::EXTProvokingVertex => "VK_EXT_provoking_vertex",
999
0
            Extension::EXTFullScreenExclusive => "VK_EXT_full_screen_exclusive",
1000
0
            Extension::EXTHeadlessSurface => "VK_EXT_headless_surface",
1001
0
            Extension::EXTLineRasterization => "VK_EXT_line_rasterization",
1002
0
            Extension::EXTShaderAtomicFloat => "VK_EXT_shader_atomic_float",
1003
0
            Extension::EXTHostQueryReset => "VK_EXT_host_query_reset",
1004
0
            Extension::EXTIndexTypeUint8 => "VK_EXT_index_type_uint8",
1005
0
            Extension::EXTExtendedDynamicState => "VK_EXT_extended_dynamic_state",
1006
0
            Extension::EXTShaderAtomicFloat2 => "VK_EXT_shader_atomic_float2",
1007
0
            Extension::EXTSurfaceMaintenance1 => "VK_EXT_surface_maintenance1",
1008
0
            Extension::EXTSwapchainMaintenance1 => "VK_EXT_swapchain_maintenance1",
1009
            Extension::EXTShaderDemoteToHelperInvocation => {
1010
0
                "VK_EXT_shader_demote_to_helper_invocation"
1011
            }
1012
0
            Extension::NVDeviceGeneratedCommands => "VK_NV_device_generated_commands",
1013
0
            Extension::NVInheritedViewportScissor => "VK_NV_inherited_viewport_scissor",
1014
0
            Extension::EXTTexelBufferAlignment => "VK_EXT_texel_buffer_alignment",
1015
0
            Extension::QCOMRenderPassTransform => "VK_QCOM_render_pass_transform",
1016
0
            Extension::EXTDeviceMemoryReport => "VK_EXT_device_memory_report",
1017
0
            Extension::EXTAcquireDrmDisplay => "VK_EXT_acquire_drm_display",
1018
0
            Extension::EXTRobustness2 => "VK_EXT_robustness2",
1019
0
            Extension::EXTCustomBorderColor => "VK_EXT_custom_border_color",
1020
0
            Extension::GOOGLEUserType => "VK_GOOGLE_user_type",
1021
0
            Extension::NVPresentBarrier => "VK_NV_present_barrier",
1022
0
            Extension::EXTPrivateData => "VK_EXT_private_data",
1023
0
            Extension::EXTPipelineCreationCacheControl => "VK_EXT_pipeline_creation_cache_control",
1024
0
            Extension::NVDeviceDiagnosticsConfig => "VK_NV_device_diagnostics_config",
1025
0
            Extension::QCOMRenderPassStoreOps => "VK_QCOM_render_pass_store_ops",
1026
0
            Extension::NVLowLatency => "VK_NV_low_latency",
1027
0
            Extension::EXTMetalObjects => "VK_EXT_metal_objects",
1028
0
            Extension::EXTDescriptorBuffer => "VK_EXT_descriptor_buffer",
1029
0
            Extension::EXTGraphicsPipelineLibrary => "VK_EXT_graphics_pipeline_library",
1030
            Extension::AMDShaderEarlyAndLateFragmentTests => {
1031
0
                "VK_AMD_shader_early_and_late_fragment_tests"
1032
            }
1033
0
            Extension::NVFragmentShadingRateEnums => "VK_NV_fragment_shading_rate_enums",
1034
0
            Extension::NVRayTracingMotionBlur => "VK_NV_ray_tracing_motion_blur",
1035
0
            Extension::EXTYcbcr2plane444Formats => "VK_EXT_ycbcr_2plane_444_formats",
1036
0
            Extension::EXTFragmentDensityMap2 => "VK_EXT_fragment_density_map2",
1037
0
            Extension::QCOMRotatedCopyCommands => "VK_QCOM_rotated_copy_commands",
1038
0
            Extension::EXTImageRobustness => "VK_EXT_image_robustness",
1039
0
            Extension::EXTImageCompressionControl => "VK_EXT_image_compression_control",
1040
0
            Extension::EXTAttachmentFeedbackLoopLayout => "VK_EXT_attachment_feedback_loop_layout",
1041
0
            Extension::EXT4444Formats => "VK_EXT_4444_formats",
1042
0
            Extension::EXTDeviceFault => "VK_EXT_device_fault",
1043
            Extension::ARMRasterizationOrderAttachmentAccess => {
1044
0
                "VK_ARM_rasterization_order_attachment_access"
1045
            }
1046
0
            Extension::EXTRgba10x6Formats => "VK_EXT_rgba10x6_formats",
1047
0
            Extension::NVAcquireWinrtDisplay => "VK_NV_acquire_winrt_display",
1048
0
            Extension::EXTDirectfbSurface => "VK_EXT_directfb_surface",
1049
0
            Extension::VALVEMutableDescriptorType => "VK_VALVE_mutable_descriptor_type",
1050
0
            Extension::EXTVertexInputDynamicState => "VK_EXT_vertex_input_dynamic_state",
1051
0
            Extension::EXTPhysicalDeviceDrm => "VK_EXT_physical_device_drm",
1052
0
            Extension::EXTDeviceAddressBindingReport => "VK_EXT_device_address_binding_report",
1053
0
            Extension::EXTDepthClipControl => "VK_EXT_depth_clip_control",
1054
0
            Extension::EXTPrimitiveTopologyListRestart => "VK_EXT_primitive_topology_list_restart",
1055
0
            Extension::FUCHSIAExternalMemory => "VK_FUCHSIA_external_memory",
1056
0
            Extension::FUCHSIAExternalSemaphore => "VK_FUCHSIA_external_semaphore",
1057
0
            Extension::FUCHSIABufferCollection => "VK_FUCHSIA_buffer_collection",
1058
0
            Extension::HUAWEISubpassShading => "VK_HUAWEI_subpass_shading",
1059
0
            Extension::HUAWEIInvocationMask => "VK_HUAWEI_invocation_mask",
1060
0
            Extension::NVExternalMemoryRdma => "VK_NV_external_memory_rdma",
1061
0
            Extension::EXTPipelineProperties => "VK_EXT_pipeline_properties",
1062
            Extension::EXTMultisampledRenderToSingleSampled => {
1063
0
                "VK_EXT_multisampled_render_to_single_sampled"
1064
            }
1065
0
            Extension::EXTExtendedDynamicState2 => "VK_EXT_extended_dynamic_state2",
1066
0
            Extension::QNXScreenSurface => "VK_QNX_screen_surface",
1067
0
            Extension::EXTColorWriteEnable => "VK_EXT_color_write_enable",
1068
0
            Extension::EXTPrimitivesGeneratedQuery => "VK_EXT_primitives_generated_query",
1069
0
            Extension::EXTGlobalPriorityQuery => "VK_EXT_global_priority_query",
1070
0
            Extension::EXTImageViewMinLod => "VK_EXT_image_view_min_lod",
1071
0
            Extension::EXTMultiDraw => "VK_EXT_multi_draw",
1072
0
            Extension::EXTImage2dViewOf3d => "VK_EXT_image_2d_view_of_3d",
1073
0
            Extension::EXTShaderTileImage => "VK_EXT_shader_tile_image",
1074
0
            Extension::EXTOpacityMicromap => "VK_EXT_opacity_micromap",
1075
0
            Extension::NVDisplacementMicromap => "VK_NV_displacement_micromap",
1076
0
            Extension::EXTLoadStoreOpNone => "VK_EXT_load_store_op_none",
1077
0
            Extension::HUAWEIClusterCullingShader => "VK_HUAWEI_cluster_culling_shader",
1078
0
            Extension::EXTBorderColorSwizzle => "VK_EXT_border_color_swizzle",
1079
0
            Extension::EXTPageableDeviceLocalMemory => "VK_EXT_pageable_device_local_memory",
1080
0
            Extension::ARMShaderCoreProperties => "VK_ARM_shader_core_properties",
1081
0
            Extension::EXTImageSlicedViewOf3d => "VK_EXT_image_sliced_view_of_3d",
1082
0
            Extension::VALVEDescriptorSetHostMapping => "VK_VALVE_descriptor_set_host_mapping",
1083
0
            Extension::EXTDepthClampZeroOne => "VK_EXT_depth_clamp_zero_one",
1084
0
            Extension::EXTNonSeamlessCubeMap => "VK_EXT_non_seamless_cube_map",
1085
0
            Extension::QCOMFragmentDensityMapOffset => "VK_QCOM_fragment_density_map_offset",
1086
0
            Extension::NVCopyMemoryIndirect => "VK_NV_copy_memory_indirect",
1087
0
            Extension::NVMemoryDecompression => "VK_NV_memory_decompression",
1088
0
            Extension::NVLinearColorAttachment => "VK_NV_linear_color_attachment",
1089
0
            Extension::GOOGLESurfacelessQuery => "VK_GOOGLE_surfaceless_query",
1090
            Extension::EXTImageCompressionControlSwapchain => {
1091
0
                "VK_EXT_image_compression_control_swapchain"
1092
            }
1093
0
            Extension::QCOMImageProcessing => "VK_QCOM_image_processing",
1094
0
            Extension::EXTExtendedDynamicState3 => "VK_EXT_extended_dynamic_state3",
1095
0
            Extension::EXTSubpassMergeFeedback => "VK_EXT_subpass_merge_feedback",
1096
0
            Extension::LUNARGDirectDriverLoading => "VK_LUNARG_direct_driver_loading",
1097
0
            Extension::EXTShaderModuleIdentifier => "VK_EXT_shader_module_identifier",
1098
            Extension::EXTRasterizationOrderAttachmentAccess => {
1099
0
                "VK_EXT_rasterization_order_attachment_access"
1100
            }
1101
0
            Extension::NVOpticalFlow => "VK_NV_optical_flow",
1102
0
            Extension::EXTLegacyDithering => "VK_EXT_legacy_dithering",
1103
0
            Extension::EXTPipelineProtectedAccess => "VK_EXT_pipeline_protected_access",
1104
0
            Extension::EXTShaderObject => "VK_EXT_shader_object",
1105
0
            Extension::QCOMTileProperties => "VK_QCOM_tile_properties",
1106
0
            Extension::SECAmigoProfiling => "VK_SEC_amigo_profiling",
1107
0
            Extension::QCOMMultiviewPerViewViewports => "VK_QCOM_multiview_per_view_viewports",
1108
0
            Extension::NVRayTracingInvocationReorder => "VK_NV_ray_tracing_invocation_reorder",
1109
0
            Extension::EXTMutableDescriptorType => "VK_EXT_mutable_descriptor_type",
1110
0
            Extension::ARMShaderCoreBuiltins => "VK_ARM_shader_core_builtins",
1111
0
            Extension::EXTPipelineLibraryGroupHandles => "VK_EXT_pipeline_library_group_handles",
1112
            Extension::EXTDynamicRenderingUnusedAttachments => {
1113
0
                "VK_EXT_dynamic_rendering_unused_attachments"
1114
            }
1115
0
            Extension::QCOMMultiviewPerViewRenderAreas => "VK_QCOM_multiview_per_view_render_areas",
1116
            Extension::EXTAttachmentFeedbackLoopDynamicState => {
1117
0
                "VK_EXT_attachment_feedback_loop_dynamic_state"
1118
            }
1119
0
            Extension::KHRAccelerationStructure => "VK_KHR_acceleration_structure",
1120
0
            Extension::KHRRayTracingPipeline => "VK_KHR_ray_tracing_pipeline",
1121
0
            Extension::KHRRayQuery => "VK_KHR_ray_query",
1122
0
            Extension::EXTMeshShader => "VK_EXT_mesh_shader",
1123
        }
1124
11
    }
1125
}
1126
1127
pub(crate) struct DeviceDispatchTable {
1128
    pub core: Arc<ash::Device>,
1129
    khr_swapchain: Arc<ash::vk::KhrSwapchainFn>,
1130
    khr_video_queue: Arc<ash::vk::KhrVideoQueueFn>,
1131
    khr_performance_query: Arc<ash::vk::KhrPerformanceQueryFn>,
1132
    khr_fragment_shading_rate: Arc<ash::vk::KhrFragmentShadingRateFn>,
1133
    ext_debug_utils: Arc<ash::vk::ExtDebugUtilsFn>,
1134
    ext_sample_locations: Arc<ash::vk::ExtSampleLocationsFn>,
1135
    ext_calibrated_timestamps: Arc<ash::vk::ExtCalibratedTimestampsFn>,
1136
    ext_full_screen_exclusive: Arc<ash::vk::ExtFullScreenExclusiveFn>,
1137
    nv_optical_flow: Arc<ash::vk::NvOpticalFlowFn>,
1138
    khr_display_swapchain: Arc<ash::vk::KhrDisplaySwapchainFn>,
1139
    khr_video_decode_queue: Arc<ash::vk::KhrVideoDecodeQueueFn>,
1140
    khr_external_memory_win32: Arc<ash::vk::KhrExternalMemoryWin32Fn>,
1141
    khr_external_memory_fd: Arc<ash::vk::KhrExternalMemoryFdFn>,
1142
    khr_external_semaphore_win32: Arc<ash::vk::KhrExternalSemaphoreWin32Fn>,
1143
    khr_external_semaphore_fd: Arc<ash::vk::KhrExternalSemaphoreFdFn>,
1144
    khr_push_descriptor: Arc<ash::vk::KhrPushDescriptorFn>,
1145
    khr_shared_presentable_image: Arc<ash::vk::KhrSharedPresentableImageFn>,
1146
    khr_external_fence_win32: Arc<ash::vk::KhrExternalFenceWin32Fn>,
1147
    khr_external_fence_fd: Arc<ash::vk::KhrExternalFenceFdFn>,
1148
    khr_present_wait: Arc<ash::vk::KhrPresentWaitFn>,
1149
    khr_deferred_host_operations: Arc<ash::vk::KhrDeferredHostOperationsFn>,
1150
    khr_pipeline_executable_properties: Arc<ash::vk::KhrPipelineExecutablePropertiesFn>,
1151
    khr_video_encode_queue: Arc<ash::vk::KhrVideoEncodeQueueFn>,
1152
    khr_synchronization2: Arc<ash::vk::KhrSynchronization2Fn>,
1153
    khr_ray_tracing_maintenance1: Arc<ash::vk::KhrRayTracingMaintenance1Fn>,
1154
    android_native_buffer: Arc<ash::vk::AndroidNativeBufferFn>,
1155
    ext_debug_marker: Arc<ash::vk::ExtDebugMarkerFn>,
1156
    ext_transform_feedback: Arc<ash::vk::ExtTransformFeedbackFn>,
1157
    nvx_binary_import: Arc<ash::vk::NvxBinaryImportFn>,
1158
    nvx_image_view_handle: Arc<ash::vk::NvxImageViewHandleFn>,
1159
    amd_shader_info: Arc<ash::vk::AmdShaderInfoFn>,
1160
    nv_external_memory_win32: Arc<ash::vk::NvExternalMemoryWin32Fn>,
1161
    ext_conditional_rendering: Arc<ash::vk::ExtConditionalRenderingFn>,
1162
    nv_clip_space_w_scaling: Arc<ash::vk::NvClipSpaceWScalingFn>,
1163
    ext_display_control: Arc<ash::vk::ExtDisplayControlFn>,
1164
    google_display_timing: Arc<ash::vk::GoogleDisplayTimingFn>,
1165
    ext_discard_rectangles: Arc<ash::vk::ExtDiscardRectanglesFn>,
1166
    ext_hdr_metadata: Arc<ash::vk::ExtHdrMetadataFn>,
1167
    android_external_memory_android_hardware_buffer:
1168
        Arc<ash::vk::AndroidExternalMemoryAndroidHardwareBufferFn>,
1169
    ext_image_drm_format_modifier: Arc<ash::vk::ExtImageDrmFormatModifierFn>,
1170
    ext_validation_cache: Arc<ash::vk::ExtValidationCacheFn>,
1171
    nv_shading_rate_image: Arc<ash::vk::NvShadingRateImageFn>,
1172
    nv_ray_tracing: Arc<ash::vk::NvRayTracingFn>,
1173
    khr_ray_tracing_pipeline: Arc<ash::vk::KhrRayTracingPipelineFn>,
1174
    ext_external_memory_host: Arc<ash::vk::ExtExternalMemoryHostFn>,
1175
    amd_buffer_marker: Arc<ash::vk::AmdBufferMarkerFn>,
1176
    nv_mesh_shader: Arc<ash::vk::NvMeshShaderFn>,
1177
    nv_scissor_exclusive: Arc<ash::vk::NvScissorExclusiveFn>,
1178
    nv_device_diagnostic_checkpoints: Arc<ash::vk::NvDeviceDiagnosticCheckpointsFn>,
1179
    intel_performance_query: Arc<ash::vk::IntelPerformanceQueryFn>,
1180
    amd_display_native_hdr: Arc<ash::vk::AmdDisplayNativeHdrFn>,
1181
    ext_line_rasterization: Arc<ash::vk::ExtLineRasterizationFn>,
1182
    ext_swapchain_maintenance1: Arc<ash::vk::ExtSwapchainMaintenance1Fn>,
1183
    nv_device_generated_commands: Arc<ash::vk::NvDeviceGeneratedCommandsFn>,
1184
    ext_metal_objects: Arc<ash::vk::ExtMetalObjectsFn>,
1185
    ext_descriptor_buffer: Arc<ash::vk::ExtDescriptorBufferFn>,
1186
    nv_fragment_shading_rate_enums: Arc<ash::vk::NvFragmentShadingRateEnumsFn>,
1187
    ext_image_compression_control: Arc<ash::vk::ExtImageCompressionControlFn>,
1188
    ext_vertex_input_dynamic_state: Arc<ash::vk::ExtVertexInputDynamicStateFn>,
1189
    fuchsia_external_memory: Arc<ash::vk::FuchsiaExternalMemoryFn>,
1190
    fuchsia_external_semaphore: Arc<ash::vk::FuchsiaExternalSemaphoreFn>,
1191
    fuchsia_buffer_collection: Arc<ash::vk::FuchsiaBufferCollectionFn>,
1192
    huawei_subpass_shading: Arc<ash::vk::HuaweiSubpassShadingFn>,
1193
    huawei_invocation_mask: Arc<ash::vk::HuaweiInvocationMaskFn>,
1194
    nv_external_memory_rdma: Arc<ash::vk::NvExternalMemoryRdmaFn>,
1195
    ext_pipeline_properties: Arc<ash::vk::ExtPipelinePropertiesFn>,
1196
    ext_extended_dynamic_state2: Arc<ash::vk::ExtExtendedDynamicState2Fn>,
1197
    ext_color_write_enable: Arc<ash::vk::ExtColorWriteEnableFn>,
1198
    ext_multi_draw: Arc<ash::vk::ExtMultiDrawFn>,
1199
    ext_opacity_micromap: Arc<ash::vk::ExtOpacityMicromapFn>,
1200
    ext_pageable_device_local_memory: Arc<ash::vk::ExtPageableDeviceLocalMemoryFn>,
1201
    valve_descriptor_set_host_mapping: Arc<ash::vk::ValveDescriptorSetHostMappingFn>,
1202
    nv_copy_memory_indirect: Arc<ash::vk::NvCopyMemoryIndirectFn>,
1203
    nv_memory_decompression: Arc<ash::vk::NvMemoryDecompressionFn>,
1204
    ext_extended_dynamic_state3: Arc<ash::vk::ExtExtendedDynamicState3Fn>,
1205
    ext_shader_module_identifier: Arc<ash::vk::ExtShaderModuleIdentifierFn>,
1206
    qcom_tile_properties: Arc<ash::vk::QcomTilePropertiesFn>,
1207
    khr_acceleration_structure: Arc<ash::vk::KhrAccelerationStructureFn>,
1208
    ext_mesh_shader: Arc<ash::vk::ExtMeshShaderFn>,
1209
}
1210
impl DeviceDispatchTable {
1211
23
    pub(crate) fn load(
1212
23
        get_device_proc_addr: vk::PFN_vkGetDeviceProcAddr,
1213
23
        device: Arc<ash::Device>,
1214
23
    ) -> Self {
1215
23
        let proc_addr_loader = get_device_proc_addr_loader(get_device_proc_addr, &device);
1216
23
        Self {
1217
23
            core: Arc::clone(&device),
1218
23
            khr_swapchain: Arc::new(ash::vk::KhrSwapchainFn::load(&proc_addr_loader)),
1219
23
            khr_video_queue: Arc::new(ash::vk::KhrVideoQueueFn::load(&proc_addr_loader)),
1220
23
            khr_performance_query: Arc::new(ash::vk::KhrPerformanceQueryFn::load(
1221
23
                &proc_addr_loader,
1222
23
            )),
1223
23
            khr_fragment_shading_rate: Arc::new(ash::vk::KhrFragmentShadingRateFn::load(
1224
23
                &proc_addr_loader,
1225
23
            )),
1226
23
            ext_debug_utils: Arc::new(ash::vk::ExtDebugUtilsFn::load(&proc_addr_loader)),
1227
23
            ext_sample_locations: Arc::new(ash::vk::ExtSampleLocationsFn::load(&proc_addr_loader)),
1228
23
            ext_calibrated_timestamps: Arc::new(ash::vk::ExtCalibratedTimestampsFn::load(
1229
23
                &proc_addr_loader,
1230
23
            )),
1231
23
            ext_full_screen_exclusive: Arc::new(ash::vk::ExtFullScreenExclusiveFn::load(
1232
23
                &proc_addr_loader,
1233
23
            )),
1234
23
            nv_optical_flow: Arc::new(ash::vk::NvOpticalFlowFn::load(&proc_addr_loader)),
1235
23
            khr_display_swapchain: Arc::new(ash::vk::KhrDisplaySwapchainFn::load(
1236
23
                &proc_addr_loader,
1237
23
            )),
1238
23
            khr_video_decode_queue: Arc::new(ash::vk::KhrVideoDecodeQueueFn::load(
1239
23
                &proc_addr_loader,
1240
23
            )),
1241
23
            khr_external_memory_win32: Arc::new(ash::vk::KhrExternalMemoryWin32Fn::load(
1242
23
                &proc_addr_loader,
1243
23
            )),
1244
23
            khr_external_memory_fd: Arc::new(ash::vk::KhrExternalMemoryFdFn::load(
1245
23
                &proc_addr_loader,
1246
23
            )),
1247
23
            khr_external_semaphore_win32: Arc::new(ash::vk::KhrExternalSemaphoreWin32Fn::load(
1248
23
                &proc_addr_loader,
1249
23
            )),
1250
23
            khr_external_semaphore_fd: Arc::new(ash::vk::KhrExternalSemaphoreFdFn::load(
1251
23
                &proc_addr_loader,
1252
23
            )),
1253
23
            khr_push_descriptor: Arc::new(ash::vk::KhrPushDescriptorFn::load(&proc_addr_loader)),
1254
23
            khr_shared_presentable_image: Arc::new(ash::vk::KhrSharedPresentableImageFn::load(
1255
23
                &proc_addr_loader,
1256
23
            )),
1257
23
            khr_external_fence_win32: Arc::new(ash::vk::KhrExternalFenceWin32Fn::load(
1258
23
                &proc_addr_loader,
1259
23
            )),
1260
23
            khr_external_fence_fd: Arc::new(ash::vk::KhrExternalFenceFdFn::load(&proc_addr_loader)),
1261
23
            khr_present_wait: Arc::new(ash::vk::KhrPresentWaitFn::load(&proc_addr_loader)),
1262
23
            khr_deferred_host_operations: Arc::new(ash::vk::KhrDeferredHostOperationsFn::load(
1263
23
                &proc_addr_loader,
1264
23
            )),
1265
23
            khr_pipeline_executable_properties: Arc::new(
1266
23
                ash::vk::KhrPipelineExecutablePropertiesFn::load(&proc_addr_loader),
1267
23
            ),
1268
23
            khr_video_encode_queue: Arc::new(ash::vk::KhrVideoEncodeQueueFn::load(
1269
23
                &proc_addr_loader,
1270
23
            )),
1271
23
            khr_synchronization2: Arc::new(ash::vk::KhrSynchronization2Fn::load(&proc_addr_loader)),
1272
23
            khr_ray_tracing_maintenance1: Arc::new(ash::vk::KhrRayTracingMaintenance1Fn::load(
1273
23
                &proc_addr_loader,
1274
23
            )),
1275
23
            android_native_buffer: Arc::new(ash::vk::AndroidNativeBufferFn::load(
1276
23
                &proc_addr_loader,
1277
23
            )),
1278
23
            ext_debug_marker: Arc::new(ash::vk::ExtDebugMarkerFn::load(&proc_addr_loader)),
1279
23
            ext_transform_feedback: Arc::new(ash::vk::ExtTransformFeedbackFn::load(
1280
23
                &proc_addr_loader,
1281
23
            )),
1282
23
            nvx_binary_import: Arc::new(ash::vk::NvxBinaryImportFn::load(&proc_addr_loader)),
1283
23
            nvx_image_view_handle: Arc::new(ash::vk::NvxImageViewHandleFn::load(&proc_addr_loader)),
1284
23
            amd_shader_info: Arc::new(ash::vk::AmdShaderInfoFn::load(&proc_addr_loader)),
1285
23
            nv_external_memory_win32: Arc::new(ash::vk::NvExternalMemoryWin32Fn::load(
1286
23
                &proc_addr_loader,
1287
23
            )),
1288
23
            ext_conditional_rendering: Arc::new(ash::vk::ExtConditionalRenderingFn::load(
1289
23
                &proc_addr_loader,
1290
23
            )),
1291
23
            nv_clip_space_w_scaling: Arc::new(ash::vk::NvClipSpaceWScalingFn::load(
1292
23
                &proc_addr_loader,
1293
23
            )),
1294
23
            ext_display_control: Arc::new(ash::vk::ExtDisplayControlFn::load(&proc_addr_loader)),
1295
23
            google_display_timing: Arc::new(ash::vk::GoogleDisplayTimingFn::load(
1296
23
                &proc_addr_loader,
1297
23
            )),
1298
23
            ext_discard_rectangles: Arc::new(ash::vk::ExtDiscardRectanglesFn::load(
1299
23
                &proc_addr_loader,
1300
23
            )),
1301
23
            ext_hdr_metadata: Arc::new(ash::vk::ExtHdrMetadataFn::load(&proc_addr_loader)),
1302
23
            android_external_memory_android_hardware_buffer: Arc::new(
1303
23
                ash::vk::AndroidExternalMemoryAndroidHardwareBufferFn::load(&proc_addr_loader),
1304
23
            ),
1305
23
            ext_image_drm_format_modifier: Arc::new(ash::vk::ExtImageDrmFormatModifierFn::load(
1306
23
                &proc_addr_loader,
1307
23
            )),
1308
23
            ext_validation_cache: Arc::new(ash::vk::ExtValidationCacheFn::load(&proc_addr_loader)),
1309
23
            nv_shading_rate_image: Arc::new(ash::vk::NvShadingRateImageFn::load(&proc_addr_loader)),
1310
23
            nv_ray_tracing: Arc::new(ash::vk::NvRayTracingFn::load(&proc_addr_loader)),
1311
23
            khr_ray_tracing_pipeline: Arc::new(ash::vk::KhrRayTracingPipelineFn::load(
1312
23
                &proc_addr_loader,
1313
23
            )),
1314
23
            ext_external_memory_host: Arc::new(ash::vk::ExtExternalMemoryHostFn::load(
1315
23
                &proc_addr_loader,
1316
23
            )),
1317
23
            amd_buffer_marker: Arc::new(ash::vk::AmdBufferMarkerFn::load(&proc_addr_loader)),
1318
23
            nv_mesh_shader: Arc::new(ash::vk::NvMeshShaderFn::load(&proc_addr_loader)),
1319
23
            nv_scissor_exclusive: Arc::new(ash::vk::NvScissorExclusiveFn::load(&proc_addr_loader)),
1320
23
            nv_device_diagnostic_checkpoints: Arc::new(
1321
23
                ash::vk::NvDeviceDiagnosticCheckpointsFn::load(&proc_addr_loader),
1322
23
            ),
1323
23
            intel_performance_query: Arc::new(ash::vk::IntelPerformanceQueryFn::load(
1324
23
                &proc_addr_loader,
1325
23
            )),
1326
23
            amd_display_native_hdr: Arc::new(ash::vk::AmdDisplayNativeHdrFn::load(
1327
23
                &proc_addr_loader,
1328
23
            )),
1329
23
            ext_line_rasterization: Arc::new(ash::vk::ExtLineRasterizationFn::load(
1330
23
                &proc_addr_loader,
1331
23
            )),
1332
23
            ext_swapchain_maintenance1: Arc::new(ash::vk::ExtSwapchainMaintenance1Fn::load(
1333
23
                &proc_addr_loader,
1334
23
            )),
1335
23
            nv_device_generated_commands: Arc::new(ash::vk::NvDeviceGeneratedCommandsFn::load(
1336
23
                &proc_addr_loader,
1337
23
            )),
1338
23
            ext_metal_objects: Arc::new(ash::vk::ExtMetalObjectsFn::load(&proc_addr_loader)),
1339
23
            ext_descriptor_buffer: Arc::new(ash::vk::ExtDescriptorBufferFn::load(
1340
23
                &proc_addr_loader,
1341
23
            )),
1342
23
            nv_fragment_shading_rate_enums: Arc::new(ash::vk::NvFragmentShadingRateEnumsFn::load(
1343
23
                &proc_addr_loader,
1344
23
            )),
1345
23
            ext_image_compression_control: Arc::new(ash::vk::ExtImageCompressionControlFn::load(
1346
23
                &proc_addr_loader,
1347
23
            )),
1348
23
            ext_vertex_input_dynamic_state: Arc::new(ash::vk::ExtVertexInputDynamicStateFn::load(
1349
23
                &proc_addr_loader,
1350
23
            )),
1351
23
            fuchsia_external_memory: Arc::new(ash::vk::FuchsiaExternalMemoryFn::load(
1352
23
                &proc_addr_loader,
1353
23
            )),
1354
23
            fuchsia_external_semaphore: Arc::new(ash::vk::FuchsiaExternalSemaphoreFn::load(
1355
23
                &proc_addr_loader,
1356
23
            )),
1357
23
            fuchsia_buffer_collection: Arc::new(ash::vk::FuchsiaBufferCollectionFn::load(
1358
23
                &proc_addr_loader,
1359
23
            )),
1360
23
            huawei_subpass_shading: Arc::new(ash::vk::HuaweiSubpassShadingFn::load(
1361
23
                &proc_addr_loader,
1362
23
            )),
1363
23
            huawei_invocation_mask: Arc::new(ash::vk::HuaweiInvocationMaskFn::load(
1364
23
                &proc_addr_loader,
1365
23
            )),
1366
23
            nv_external_memory_rdma: Arc::new(ash::vk::NvExternalMemoryRdmaFn::load(
1367
23
                &proc_addr_loader,
1368
23
            )),
1369
23
            ext_pipeline_properties: Arc::new(ash::vk::ExtPipelinePropertiesFn::load(
1370
23
                &proc_addr_loader,
1371
23
            )),
1372
23
            ext_extended_dynamic_state2: Arc::new(ash::vk::ExtExtendedDynamicState2Fn::load(
1373
23
                &proc_addr_loader,
1374
23
            )),
1375
23
            ext_color_write_enable: Arc::new(ash::vk::ExtColorWriteEnableFn::load(
1376
23
                &proc_addr_loader,
1377
23
            )),
1378
23
            ext_multi_draw: Arc::new(ash::vk::ExtMultiDrawFn::load(&proc_addr_loader)),
1379
23
            ext_opacity_micromap: Arc::new(ash::vk::ExtOpacityMicromapFn::load(&proc_addr_loader)),
1380
23
            ext_pageable_device_local_memory: Arc::new(
1381
23
                ash::vk::ExtPageableDeviceLocalMemoryFn::load(&proc_addr_loader),
1382
23
            ),
1383
23
            valve_descriptor_set_host_mapping: Arc::new(
1384
23
                ash::vk::ValveDescriptorSetHostMappingFn::load(&proc_addr_loader),
1385
23
            ),
1386
23
            nv_copy_memory_indirect: Arc::new(ash::vk::NvCopyMemoryIndirectFn::load(
1387
23
                &proc_addr_loader,
1388
23
            )),
1389
23
            nv_memory_decompression: Arc::new(ash::vk::NvMemoryDecompressionFn::load(
1390
23
                &proc_addr_loader,
1391
23
            )),
1392
23
            ext_extended_dynamic_state3: Arc::new(ash::vk::ExtExtendedDynamicState3Fn::load(
1393
23
                &proc_addr_loader,
1394
23
            )),
1395
23
            ext_shader_module_identifier: Arc::new(ash::vk::ExtShaderModuleIdentifierFn::load(
1396
23
                &proc_addr_loader,
1397
23
            )),
1398
23
            qcom_tile_properties: Arc::new(ash::vk::QcomTilePropertiesFn::load(&proc_addr_loader)),
1399
23
            khr_acceleration_structure: Arc::new(ash::vk::KhrAccelerationStructureFn::load(
1400
23
                &proc_addr_loader,
1401
23
            )),
1402
23
            ext_mesh_shader: Arc::new(ash::vk::ExtMeshShaderFn::load(&proc_addr_loader)),
1403
23
        }
1404
23
    }
1405
}
1406
pub(crate) struct InstanceDispatchTable {
1407
    pub core: Arc<ash::Instance>,
1408
    khr_surface: Arc<ash::vk::KhrSurfaceFn>,
1409
    khr_swapchain: Arc<ash::vk::KhrSwapchainFn>,
1410
    khr_display: Arc<ash::vk::KhrDisplayFn>,
1411
    khr_xlib_surface: Arc<ash::vk::KhrXlibSurfaceFn>,
1412
    khr_xcb_surface: Arc<ash::vk::KhrXcbSurfaceFn>,
1413
    khr_wayland_surface: Arc<ash::vk::KhrWaylandSurfaceFn>,
1414
    khr_android_surface: Arc<ash::vk::KhrAndroidSurfaceFn>,
1415
    khr_win32_surface: Arc<ash::vk::KhrWin32SurfaceFn>,
1416
    khr_video_queue: Arc<ash::vk::KhrVideoQueueFn>,
1417
    khr_performance_query: Arc<ash::vk::KhrPerformanceQueryFn>,
1418
    khr_get_surface_capabilities2: Arc<ash::vk::KhrGetSurfaceCapabilities2Fn>,
1419
    khr_get_display_properties2: Arc<ash::vk::KhrGetDisplayProperties2Fn>,
1420
    khr_fragment_shading_rate: Arc<ash::vk::KhrFragmentShadingRateFn>,
1421
    #[allow(deprecated)]
1422
    ext_debug_report: Arc<ash::vk::ExtDebugReportFn>,
1423
    ggp_stream_descriptor_surface: Arc<ash::vk::GgpStreamDescriptorSurfaceFn>,
1424
    nv_external_memory_capabilities: Arc<ash::vk::NvExternalMemoryCapabilitiesFn>,
1425
    nn_vi_surface: Arc<ash::vk::NnViSurfaceFn>,
1426
    ext_direct_mode_display: Arc<ash::vk::ExtDirectModeDisplayFn>,
1427
    ext_acquire_xlib_display: Arc<ash::vk::ExtAcquireXlibDisplayFn>,
1428
    ext_display_surface_counter: Arc<ash::vk::ExtDisplaySurfaceCounterFn>,
1429
    mvk_ios_surface: Arc<ash::vk::MvkIosSurfaceFn>,
1430
    mvk_macos_surface: Arc<ash::vk::MvkMacosSurfaceFn>,
1431
    ext_debug_utils: Arc<ash::vk::ExtDebugUtilsFn>,
1432
    ext_sample_locations: Arc<ash::vk::ExtSampleLocationsFn>,
1433
    ext_calibrated_timestamps: Arc<ash::vk::ExtCalibratedTimestampsFn>,
1434
    fuchsia_imagepipe_surface: Arc<ash::vk::FuchsiaImagepipeSurfaceFn>,
1435
    ext_metal_surface: Arc<ash::vk::ExtMetalSurfaceFn>,
1436
    nv_cooperative_matrix: Arc<ash::vk::NvCooperativeMatrixFn>,
1437
    nv_coverage_reduction_mode: Arc<ash::vk::NvCoverageReductionModeFn>,
1438
    ext_full_screen_exclusive: Arc<ash::vk::ExtFullScreenExclusiveFn>,
1439
    ext_headless_surface: Arc<ash::vk::ExtHeadlessSurfaceFn>,
1440
    ext_acquire_drm_display: Arc<ash::vk::ExtAcquireDrmDisplayFn>,
1441
    nv_acquire_winrt_display: Arc<ash::vk::NvAcquireWinrtDisplayFn>,
1442
    ext_directfb_surface: Arc<ash::vk::ExtDirectfbSurfaceFn>,
1443
    qnx_screen_surface: Arc<ash::vk::QnxScreenSurfaceFn>,
1444
    nv_optical_flow: Arc<ash::vk::NvOpticalFlowFn>,
1445
}
1446
impl InstanceDispatchTable {
1447
48
    pub(crate) fn load(
1448
48
        get_instance_proc_addr: vk::PFN_vkGetInstanceProcAddr,
1449
48
        instance: Arc<ash::Instance>,
1450
48
    ) -> Self {
1451
48
        let proc_addr_loader = get_instance_proc_addr_loader(get_instance_proc_addr, &instance);
1452
48
        Self {
1453
48
            core: Arc::clone(&instance),
1454
48
            khr_surface: Arc::new(ash::vk::KhrSurfaceFn::load(&proc_addr_loader)),
1455
48
            khr_swapchain: Arc::new(ash::vk::KhrSwapchainFn::load(&proc_addr_loader)),
1456
48
            khr_display: Arc::new(ash::vk::KhrDisplayFn::load(&proc_addr_loader)),
1457
48
            khr_xlib_surface: Arc::new(ash::vk::KhrXlibSurfaceFn::load(&proc_addr_loader)),
1458
48
            khr_xcb_surface: Arc::new(ash::vk::KhrXcbSurfaceFn::load(&proc_addr_loader)),
1459
48
            khr_wayland_surface: Arc::new(ash::vk::KhrWaylandSurfaceFn::load(&proc_addr_loader)),
1460
48
            khr_android_surface: Arc::new(ash::vk::KhrAndroidSurfaceFn::load(&proc_addr_loader)),
1461
48
            khr_win32_surface: Arc::new(ash::vk::KhrWin32SurfaceFn::load(&proc_addr_loader)),
1462
48
            khr_video_queue: Arc::new(ash::vk::KhrVideoQueueFn::load(&proc_addr_loader)),
1463
48
            khr_performance_query: Arc::new(ash::vk::KhrPerformanceQueryFn::load(
1464
48
                &proc_addr_loader,
1465
48
            )),
1466
48
            khr_get_surface_capabilities2: Arc::new(ash::vk::KhrGetSurfaceCapabilities2Fn::load(
1467
48
                &proc_addr_loader,
1468
48
            )),
1469
48
            khr_get_display_properties2: Arc::new(ash::vk::KhrGetDisplayProperties2Fn::load(
1470
48
                &proc_addr_loader,
1471
48
            )),
1472
48
            khr_fragment_shading_rate: Arc::new(ash::vk::KhrFragmentShadingRateFn::load(
1473
48
                &proc_addr_loader,
1474
48
            )),
1475
48
            ext_debug_report: Arc::new(ash::vk::ExtDebugReportFn::load(&proc_addr_loader)),
1476
48
            ggp_stream_descriptor_surface: Arc::new(ash::vk::GgpStreamDescriptorSurfaceFn::load(
1477
48
                &proc_addr_loader,
1478
48
            )),
1479
48
            nv_external_memory_capabilities: Arc::new(
1480
48
                ash::vk::NvExternalMemoryCapabilitiesFn::load(&proc_addr_loader),
1481
48
            ),
1482
48
            nn_vi_surface: Arc::new(ash::vk::NnViSurfaceFn::load(&proc_addr_loader)),
1483
48
            ext_direct_mode_display: Arc::new(ash::vk::ExtDirectModeDisplayFn::load(
1484
48
                &proc_addr_loader,
1485
48
            )),
1486
48
            ext_acquire_xlib_display: Arc::new(ash::vk::ExtAcquireXlibDisplayFn::load(
1487
48
                &proc_addr_loader,
1488
48
            )),
1489
48
            ext_display_surface_counter: Arc::new(ash::vk::ExtDisplaySurfaceCounterFn::load(
1490
48
                &proc_addr_loader,
1491
48
            )),
1492
48
            mvk_ios_surface: Arc::new(ash::vk::MvkIosSurfaceFn::load(&proc_addr_loader)),
1493
48
            mvk_macos_surface: Arc::new(ash::vk::MvkMacosSurfaceFn::load(&proc_addr_loader)),
1494
48
            ext_debug_utils: Arc::new(ash::vk::ExtDebugUtilsFn::load(&proc_addr_loader)),
1495
48
            ext_sample_locations: Arc::new(ash::vk::ExtSampleLocationsFn::load(&proc_addr_loader)),
1496
48
            ext_calibrated_timestamps: Arc::new(ash::vk::ExtCalibratedTimestampsFn::load(
1497
48
                &proc_addr_loader,
1498
48
            )),
1499
48
            fuchsia_imagepipe_surface: Arc::new(ash::vk::FuchsiaImagepipeSurfaceFn::load(
1500
48
                &proc_addr_loader,
1501
48
            )),
1502
48
            ext_metal_surface: Arc::new(ash::vk::ExtMetalSurfaceFn::load(&proc_addr_loader)),
1503
48
            nv_cooperative_matrix: Arc::new(ash::vk::NvCooperativeMatrixFn::load(
1504
48
                &proc_addr_loader,
1505
48
            )),
1506
48
            nv_coverage_reduction_mode: Arc::new(ash::vk::NvCoverageReductionModeFn::load(
1507
48
                &proc_addr_loader,
1508
48
            )),
1509
48
            ext_full_screen_exclusive: Arc::new(ash::vk::ExtFullScreenExclusiveFn::load(
1510
48
                &proc_addr_loader,
1511
48
            )),
1512
48
            ext_headless_surface: Arc::new(ash::vk::ExtHeadlessSurfaceFn::load(&proc_addr_loader)),
1513
48
            ext_acquire_drm_display: Arc::new(ash::vk::ExtAcquireDrmDisplayFn::load(
1514
48
                &proc_addr_loader,
1515
48
            )),
1516
48
            nv_acquire_winrt_display: Arc::new(ash::vk::NvAcquireWinrtDisplayFn::load(
1517
48
                &proc_addr_loader,
1518
48
            )),
1519
48
            ext_directfb_surface: Arc::new(ash::vk::ExtDirectfbSurfaceFn::load(&proc_addr_loader)),
1520
48
            qnx_screen_surface: Arc::new(ash::vk::QnxScreenSurfaceFn::load(&proc_addr_loader)),
1521
48
            nv_optical_flow: Arc::new(ash::vk::NvOpticalFlowFn::load(&proc_addr_loader)),
1522
48
        }
1523
48
    }
1524
}
1525
1526
// Unhandled commands:
1527
// * vkMapMemory2KHR: The ash Rust binding doesn't have proper bindings yet.
1528
// * vkUnmapMemory2KHR: The ash Rust binding doesn't have proper bindings yet.
1529
// * vkCmdSetDiscardRectangleEnableEXT: The ash Rust binding doesn't have proper bindings yet.
1530
// * vkCmdSetDiscardRectangleModeEXT: The ash Rust binding doesn't have proper bindings yet.
1531
// * vkCmdSetExclusiveScissorEnableNV: The ash Rust binding doesn't have proper bindings yet.
1532
// * vkGetDeviceFaultInfoEXT: The length info and the data pointer are nested in structs.
1533
// * vkCmdDrawClusterHUAWEI: The ash Rust binding doesn't have proper bindings yet.
1534
// * vkCmdDrawClusterIndirectHUAWEI: The ash Rust binding doesn't have proper bindings yet.
1535
// * vkCreateShadersEXT: The ash Rust binding doesn't have proper bindings yet.
1536
// * vkDestroyShaderEXT: The ash Rust binding doesn't have proper bindings yet.
1537
// * vkGetShaderBinaryDataEXT: The ash Rust binding doesn't have proper bindings yet.
1538
// * vkCmdBindShadersEXT: The ash Rust binding doesn't have proper bindings yet.
1539
// * vkCmdSetAttachmentFeedbackLoopEnableEXT: The ash Rust binding doesn't have proper bindings yet.
1540
// * vkCmdBuildAccelerationStructuresKHR: Dynamic multi-dimensional array bindings are not supported
1541
//   yet.
1542
// * vkCmdBuildAccelerationStructuresIndirectKHR: Dynamic multi-dimensional array bindings are not
1543
//   supported yet.
1544
// * vkBuildAccelerationStructuresKHR: Dynamic multi-dimensional array bindings are not supported
1545
//   yet.
1546
1547
impl<T: Layer> Global<T> {
1548
72
    pub(crate) fn create_device_commands(
1549
72
        &self,
1550
72
        instance_info: &T::InstanceInfo,
1551
72
        device_info: Option<&T::DeviceInfo>,
1552
72
    ) -> Box<[VulkanCommand]> {
1553
72
        let hooked_commands = self
1554
72
            .layer_info
1555
72
            .hooked_device_commands(instance_info, device_info)
1556
72
            .collect::<HashSet<_>>();
1557
72
        Box::new([
1558
72
            VulkanCommand {
1559
72
                name: "vkAcquireFullScreenExclusiveModeEXT",
1560
72
                features: smallvec![
Feature::Extension(Extension::EXTFullScreenExclusive)0
],
1561
72
                hooked: hooked_commands
1562
72
                    .contains(&LayerVulkanCommand::AcquireFullScreenExclusiveModeExt),
1563
72
                proc: unsafe {
1564
72
                    std::mem::transmute::<
1565
72
                        vk::PFN_vkAcquireFullScreenExclusiveModeEXT,
1566
72
                        vk::PFN_vkVoidFunction,
1567
72
                    >(Self::acquire_full_screen_exclusive_mode_ext)
1568
72
                },
1569
72
            },
1570
72
            VulkanCommand {
1571
72
                name: "vkAcquireImageANDROID",
1572
72
                features: smallvec![
Feature::Extension(Extension::ANDROIDNativeBuffer)0
],
1573
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::AcquireImageAndroid),
1574
72
                proc: unsafe {
1575
72
                    std::mem::transmute::<vk::PFN_vkAcquireImageANDROID, vk::PFN_vkVoidFunction>(
1576
72
                        Self::acquire_image_android,
1577
72
                    )
1578
72
                },
1579
72
            },
1580
72
            VulkanCommand {
1581
72
                name: "vkAcquireNextImage2KHR",
1582
72
                features: smallvec![
1583
0
                    Feature::Extension(Extension::KHRSwapchain),
1584
0
                    Feature::Extension(Extension::KHRDeviceGroup)
1585
                ],
1586
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::AcquireNextImage2Khr),
1587
72
                proc: unsafe {
1588
72
                    std::mem::transmute::<vk::PFN_vkAcquireNextImage2KHR, vk::PFN_vkVoidFunction>(
1589
72
                        Self::acquire_next_image2_khr,
1590
72
                    )
1591
72
                },
1592
72
            },
1593
72
            VulkanCommand {
1594
72
                name: "vkAcquireNextImageKHR",
1595
72
                features: smallvec![
Feature::Extension(Extension::KHRSwapchain)0
],
1596
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::AcquireNextImageKhr),
1597
72
                proc: unsafe {
1598
72
                    std::mem::transmute::<vk::PFN_vkAcquireNextImageKHR, vk::PFN_vkVoidFunction>(
1599
72
                        Self::acquire_next_image_khr,
1600
72
                    )
1601
72
                },
1602
72
            },
1603
72
            VulkanCommand {
1604
72
                name: "vkAcquirePerformanceConfigurationINTEL",
1605
72
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
1606
72
                hooked: hooked_commands
1607
72
                    .contains(&LayerVulkanCommand::AcquirePerformanceConfigurationIntel),
1608
72
                proc: unsafe {
1609
72
                    std::mem::transmute::<
1610
72
                        vk::PFN_vkAcquirePerformanceConfigurationINTEL,
1611
72
                        vk::PFN_vkVoidFunction,
1612
72
                    >(Self::acquire_performance_configuration_intel)
1613
72
                },
1614
72
            },
1615
72
            VulkanCommand {
1616
72
                name: "vkAcquireProfilingLockKHR",
1617
72
                features: smallvec![
Feature::Extension(Extension::KHRPerformanceQuery)0
],
1618
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::AcquireProfilingLockKhr),
1619
72
                proc: unsafe {
1620
72
                    std::mem::transmute::<vk::PFN_vkAcquireProfilingLockKHR, vk::PFN_vkVoidFunction>(
1621
72
                        Self::acquire_profiling_lock_khr,
1622
72
                    )
1623
72
                },
1624
72
            },
1625
72
            VulkanCommand {
1626
72
                name: "vkAllocateCommandBuffers",
1627
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1628
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::AllocateCommandBuffers),
1629
72
                proc: unsafe {
1630
72
                    std::mem::transmute::<vk::PFN_vkAllocateCommandBuffers, vk::PFN_vkVoidFunction>(
1631
72
                        Self::allocate_command_buffers,
1632
72
                    )
1633
72
                },
1634
72
            },
1635
72
            VulkanCommand {
1636
72
                name: "vkAllocateDescriptorSets",
1637
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1638
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::AllocateDescriptorSets),
1639
72
                proc: unsafe {
1640
72
                    std::mem::transmute::<vk::PFN_vkAllocateDescriptorSets, vk::PFN_vkVoidFunction>(
1641
72
                        Self::allocate_descriptor_sets,
1642
72
                    )
1643
72
                },
1644
72
            },
1645
72
            VulkanCommand {
1646
72
                name: "vkAllocateMemory",
1647
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1648
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::AllocateMemory),
1649
72
                proc: unsafe {
1650
72
                    std::mem::transmute::<vk::PFN_vkAllocateMemory, vk::PFN_vkVoidFunction>(
1651
72
                        Self::allocate_memory,
1652
72
                    )
1653
72
                },
1654
72
            },
1655
72
            VulkanCommand {
1656
72
                name: "vkBeginCommandBuffer",
1657
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1658
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::BeginCommandBuffer),
1659
72
                proc: unsafe {
1660
72
                    std::mem::transmute::<vk::PFN_vkBeginCommandBuffer, vk::PFN_vkVoidFunction>(
1661
72
                        Self::begin_command_buffer,
1662
72
                    )
1663
72
                },
1664
72
            },
1665
72
            VulkanCommand {
1666
72
                name: "vkBindAccelerationStructureMemoryNV",
1667
72
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
1668
72
                hooked: hooked_commands
1669
72
                    .contains(&LayerVulkanCommand::BindAccelerationStructureMemoryNv),
1670
72
                proc: unsafe {
1671
72
                    std::mem::transmute::<
1672
72
                        vk::PFN_vkBindAccelerationStructureMemoryNV,
1673
72
                        vk::PFN_vkVoidFunction,
1674
72
                    >(Self::bind_acceleration_structure_memory_nv)
1675
72
                },
1676
72
            },
1677
72
            VulkanCommand {
1678
72
                name: "vkBindBufferMemory",
1679
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1680
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::BindBufferMemory),
1681
72
                proc: unsafe {
1682
72
                    std::mem::transmute::<vk::PFN_vkBindBufferMemory, vk::PFN_vkVoidFunction>(
1683
72
                        Self::bind_buffer_memory,
1684
72
                    )
1685
72
                },
1686
72
            },
1687
72
            VulkanCommand {
1688
72
                name: "vkBindBufferMemory2",
1689
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
1690
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::BindBufferMemory2),
1691
72
                proc: unsafe {
1692
72
                    std::mem::transmute::<vk::PFN_vkBindBufferMemory2, vk::PFN_vkVoidFunction>(
1693
72
                        Self::bind_buffer_memory2,
1694
72
                    )
1695
72
                },
1696
72
            },
1697
72
            VulkanCommand {
1698
72
                name: "vkBindBufferMemory2KHR",
1699
72
                features: smallvec![
Feature::Extension(Extension::KHRBindMemory2)0
],
1700
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::BindBufferMemory2),
1701
72
                proc: unsafe {
1702
72
                    std::mem::transmute::<vk::PFN_vkBindBufferMemory2, vk::PFN_vkVoidFunction>(
1703
72
                        Self::bind_buffer_memory2,
1704
72
                    )
1705
72
                },
1706
72
            },
1707
72
            VulkanCommand {
1708
72
                name: "vkBindImageMemory",
1709
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1710
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::BindImageMemory),
1711
72
                proc: unsafe {
1712
72
                    std::mem::transmute::<vk::PFN_vkBindImageMemory, vk::PFN_vkVoidFunction>(
1713
72
                        Self::bind_image_memory,
1714
72
                    )
1715
72
                },
1716
72
            },
1717
72
            VulkanCommand {
1718
72
                name: "vkBindImageMemory2",
1719
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
1720
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::BindImageMemory2),
1721
72
                proc: unsafe {
1722
72
                    std::mem::transmute::<vk::PFN_vkBindImageMemory2, vk::PFN_vkVoidFunction>(
1723
72
                        Self::bind_image_memory2,
1724
72
                    )
1725
72
                },
1726
72
            },
1727
72
            VulkanCommand {
1728
72
                name: "vkBindImageMemory2KHR",
1729
72
                features: smallvec![
Feature::Extension(Extension::KHRBindMemory2)0
],
1730
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::BindImageMemory2),
1731
72
                proc: unsafe {
1732
72
                    std::mem::transmute::<vk::PFN_vkBindImageMemory2, vk::PFN_vkVoidFunction>(
1733
72
                        Self::bind_image_memory2,
1734
72
                    )
1735
72
                },
1736
72
            },
1737
72
            VulkanCommand {
1738
72
                name: "vkBindOpticalFlowSessionImageNV",
1739
72
                features: smallvec![
Feature::Extension(Extension::NVOpticalFlow)0
],
1740
72
                hooked: hooked_commands
1741
72
                    .contains(&LayerVulkanCommand::BindOpticalFlowSessionImageNv),
1742
72
                proc: unsafe {
1743
72
                    std::mem::transmute::<
1744
72
                        vk::PFN_vkBindOpticalFlowSessionImageNV,
1745
72
                        vk::PFN_vkVoidFunction,
1746
72
                    >(Self::bind_optical_flow_session_image_nv)
1747
72
                },
1748
72
            },
1749
72
            VulkanCommand {
1750
72
                name: "vkBindVideoSessionMemoryKHR",
1751
72
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
1752
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::BindVideoSessionMemoryKhr),
1753
72
                proc: unsafe {
1754
72
                    std::mem::transmute::<vk::PFN_vkBindVideoSessionMemoryKHR, vk::PFN_vkVoidFunction>(
1755
72
                        Self::bind_video_session_memory_khr,
1756
72
                    )
1757
72
                },
1758
72
            },
1759
72
            VulkanCommand {
1760
72
                name: "vkBuildMicromapsEXT",
1761
72
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
1762
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::BuildMicromapsExt),
1763
72
                proc: unsafe {
1764
72
                    std::mem::transmute::<vk::PFN_vkBuildMicromapsEXT, vk::PFN_vkVoidFunction>(
1765
72
                        Self::build_micromaps_ext,
1766
72
                    )
1767
72
                },
1768
72
            },
1769
72
            VulkanCommand {
1770
72
                name: "vkCmdBeginConditionalRenderingEXT",
1771
72
                features: smallvec![
Feature::Extension(Extension::EXTConditionalRendering)0
],
1772
72
                hooked: hooked_commands
1773
72
                    .contains(&LayerVulkanCommand::CmdBeginConditionalRenderingExt),
1774
72
                proc: unsafe {
1775
72
                    std::mem::transmute::<
1776
72
                        vk::PFN_vkCmdBeginConditionalRenderingEXT,
1777
72
                        vk::PFN_vkVoidFunction,
1778
72
                    >(Self::cmd_begin_conditional_rendering_ext)
1779
72
                },
1780
72
            },
1781
72
            VulkanCommand {
1782
72
                name: "vkCmdBeginDebugUtilsLabelEXT",
1783
72
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
1784
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginDebugUtilsLabelExt),
1785
72
                proc: unsafe {
1786
72
                    std::mem::transmute::<
1787
72
                        vk::PFN_vkCmdBeginDebugUtilsLabelEXT,
1788
72
                        vk::PFN_vkVoidFunction,
1789
72
                    >(Self::cmd_begin_debug_utils_label_ext)
1790
72
                },
1791
72
            },
1792
72
            VulkanCommand {
1793
72
                name: "vkCmdBeginQuery",
1794
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1795
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginQuery),
1796
72
                proc: unsafe {
1797
72
                    std::mem::transmute::<vk::PFN_vkCmdBeginQuery, vk::PFN_vkVoidFunction>(
1798
72
                        Self::cmd_begin_query,
1799
72
                    )
1800
72
                },
1801
72
            },
1802
72
            VulkanCommand {
1803
72
                name: "vkCmdBeginQueryIndexedEXT",
1804
72
                features: smallvec![
Feature::Extension(Extension::EXTTransformFeedback)0
],
1805
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginQueryIndexedExt),
1806
72
                proc: unsafe {
1807
72
                    std::mem::transmute::<vk::PFN_vkCmdBeginQueryIndexedEXT, vk::PFN_vkVoidFunction>(
1808
72
                        Self::cmd_begin_query_indexed_ext,
1809
72
                    )
1810
72
                },
1811
72
            },
1812
72
            VulkanCommand {
1813
72
                name: "vkCmdBeginRenderPass",
1814
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1815
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginRenderPass),
1816
72
                proc: unsafe {
1817
72
                    std::mem::transmute::<vk::PFN_vkCmdBeginRenderPass, vk::PFN_vkVoidFunction>(
1818
72
                        Self::cmd_begin_render_pass,
1819
72
                    )
1820
72
                },
1821
72
            },
1822
72
            VulkanCommand {
1823
72
                name: "vkCmdBeginRenderPass2",
1824
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
1825
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginRenderPass2),
1826
72
                proc: unsafe {
1827
72
                    std::mem::transmute::<vk::PFN_vkCmdBeginRenderPass2, vk::PFN_vkVoidFunction>(
1828
72
                        Self::cmd_begin_render_pass2,
1829
72
                    )
1830
72
                },
1831
72
            },
1832
72
            VulkanCommand {
1833
72
                name: "vkCmdBeginRenderPass2KHR",
1834
72
                features: smallvec![
Feature::Extension(Extension::KHRCreateRenderpass2)0
],
1835
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginRenderPass2),
1836
72
                proc: unsafe {
1837
72
                    std::mem::transmute::<vk::PFN_vkCmdBeginRenderPass2, vk::PFN_vkVoidFunction>(
1838
72
                        Self::cmd_begin_render_pass2,
1839
72
                    )
1840
72
                },
1841
72
            },
1842
72
            VulkanCommand {
1843
72
                name: "vkCmdBeginRendering",
1844
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
1845
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginRendering),
1846
72
                proc: unsafe {
1847
72
                    std::mem::transmute::<vk::PFN_vkCmdBeginRendering, vk::PFN_vkVoidFunction>(
1848
72
                        Self::cmd_begin_rendering,
1849
72
                    )
1850
72
                },
1851
72
            },
1852
72
            VulkanCommand {
1853
72
                name: "vkCmdBeginRenderingKHR",
1854
72
                features: smallvec![
Feature::Extension(Extension::KHRDynamicRendering)0
],
1855
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginRendering),
1856
72
                proc: unsafe {
1857
72
                    std::mem::transmute::<vk::PFN_vkCmdBeginRendering, vk::PFN_vkVoidFunction>(
1858
72
                        Self::cmd_begin_rendering,
1859
72
                    )
1860
72
                },
1861
72
            },
1862
72
            VulkanCommand {
1863
72
                name: "vkCmdBeginTransformFeedbackEXT",
1864
72
                features: smallvec![
Feature::Extension(Extension::EXTTransformFeedback)0
],
1865
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginTransformFeedbackExt),
1866
72
                proc: unsafe {
1867
72
                    std::mem::transmute::<
1868
72
                        vk::PFN_vkCmdBeginTransformFeedbackEXT,
1869
72
                        vk::PFN_vkVoidFunction,
1870
72
                    >(Self::cmd_begin_transform_feedback_ext)
1871
72
                },
1872
72
            },
1873
72
            VulkanCommand {
1874
72
                name: "vkCmdBeginVideoCodingKHR",
1875
72
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
1876
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginVideoCodingKhr),
1877
72
                proc: unsafe {
1878
72
                    std::mem::transmute::<vk::PFN_vkCmdBeginVideoCodingKHR, vk::PFN_vkVoidFunction>(
1879
72
                        Self::cmd_begin_video_coding_khr,
1880
72
                    )
1881
72
                },
1882
72
            },
1883
72
            VulkanCommand {
1884
72
                name: "vkCmdBindDescriptorBufferEmbeddedSamplersEXT",
1885
72
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
1886
72
                hooked: hooked_commands
1887
72
                    .contains(&LayerVulkanCommand::CmdBindDescriptorBufferEmbeddedSamplersExt),
1888
72
                proc: unsafe {
1889
72
                    std::mem::transmute::<
1890
72
                        vk::PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT,
1891
72
                        vk::PFN_vkVoidFunction,
1892
72
                    >(Self::cmd_bind_descriptor_buffer_embedded_samplers_ext)
1893
72
                },
1894
72
            },
1895
72
            VulkanCommand {
1896
72
                name: "vkCmdBindDescriptorBuffersEXT",
1897
72
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
1898
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindDescriptorBuffersExt),
1899
72
                proc: unsafe {
1900
72
                    std::mem::transmute::<
1901
72
                        vk::PFN_vkCmdBindDescriptorBuffersEXT,
1902
72
                        vk::PFN_vkVoidFunction,
1903
72
                    >(Self::cmd_bind_descriptor_buffers_ext)
1904
72
                },
1905
72
            },
1906
72
            VulkanCommand {
1907
72
                name: "vkCmdBindDescriptorSets",
1908
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1909
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindDescriptorSets),
1910
72
                proc: unsafe {
1911
72
                    std::mem::transmute::<vk::PFN_vkCmdBindDescriptorSets, vk::PFN_vkVoidFunction>(
1912
72
                        Self::cmd_bind_descriptor_sets,
1913
72
                    )
1914
72
                },
1915
72
            },
1916
72
            VulkanCommand {
1917
72
                name: "vkCmdBindIndexBuffer",
1918
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1919
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindIndexBuffer),
1920
72
                proc: unsafe {
1921
72
                    std::mem::transmute::<vk::PFN_vkCmdBindIndexBuffer, vk::PFN_vkVoidFunction>(
1922
72
                        Self::cmd_bind_index_buffer,
1923
72
                    )
1924
72
                },
1925
72
            },
1926
72
            VulkanCommand {
1927
72
                name: "vkCmdBindInvocationMaskHUAWEI",
1928
72
                features: smallvec![
Feature::Extension(Extension::HUAWEIInvocationMask)0
],
1929
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindInvocationMaskHuawei),
1930
72
                proc: unsafe {
1931
72
                    std::mem::transmute::<
1932
72
                        vk::PFN_vkCmdBindInvocationMaskHUAWEI,
1933
72
                        vk::PFN_vkVoidFunction,
1934
72
                    >(Self::cmd_bind_invocation_mask_huawei)
1935
72
                },
1936
72
            },
1937
72
            VulkanCommand {
1938
72
                name: "vkCmdBindPipeline",
1939
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1940
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindPipeline),
1941
72
                proc: unsafe {
1942
72
                    std::mem::transmute::<vk::PFN_vkCmdBindPipeline, vk::PFN_vkVoidFunction>(
1943
72
                        Self::cmd_bind_pipeline,
1944
72
                    )
1945
72
                },
1946
72
            },
1947
72
            VulkanCommand {
1948
72
                name: "vkCmdBindPipelineShaderGroupNV",
1949
72
                features: smallvec![
Feature::Extension(Extension::NVDeviceGeneratedCommands)0
],
1950
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindPipelineShaderGroupNv),
1951
72
                proc: unsafe {
1952
72
                    std::mem::transmute::<
1953
72
                        vk::PFN_vkCmdBindPipelineShaderGroupNV,
1954
72
                        vk::PFN_vkVoidFunction,
1955
72
                    >(Self::cmd_bind_pipeline_shader_group_nv)
1956
72
                },
1957
72
            },
1958
72
            VulkanCommand {
1959
72
                name: "vkCmdBindShadingRateImageNV",
1960
72
                features: smallvec![
Feature::Extension(Extension::NVShadingRateImage)0
],
1961
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindShadingRateImageNv),
1962
72
                proc: unsafe {
1963
72
                    std::mem::transmute::<vk::PFN_vkCmdBindShadingRateImageNV, vk::PFN_vkVoidFunction>(
1964
72
                        Self::cmd_bind_shading_rate_image_nv,
1965
72
                    )
1966
72
                },
1967
72
            },
1968
72
            VulkanCommand {
1969
72
                name: "vkCmdBindTransformFeedbackBuffersEXT",
1970
72
                features: smallvec![
Feature::Extension(Extension::EXTTransformFeedback)0
],
1971
72
                hooked: hooked_commands
1972
72
                    .contains(&LayerVulkanCommand::CmdBindTransformFeedbackBuffersExt),
1973
72
                proc: unsafe {
1974
72
                    std::mem::transmute::<
1975
72
                        vk::PFN_vkCmdBindTransformFeedbackBuffersEXT,
1976
72
                        vk::PFN_vkVoidFunction,
1977
72
                    >(Self::cmd_bind_transform_feedback_buffers_ext)
1978
72
                },
1979
72
            },
1980
72
            VulkanCommand {
1981
72
                name: "vkCmdBindVertexBuffers",
1982
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1983
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindVertexBuffers),
1984
72
                proc: unsafe {
1985
72
                    std::mem::transmute::<vk::PFN_vkCmdBindVertexBuffers, vk::PFN_vkVoidFunction>(
1986
72
                        Self::cmd_bind_vertex_buffers,
1987
72
                    )
1988
72
                },
1989
72
            },
1990
72
            VulkanCommand {
1991
72
                name: "vkCmdBindVertexBuffers2",
1992
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
1993
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindVertexBuffers2),
1994
72
                proc: unsafe {
1995
72
                    std::mem::transmute::<vk::PFN_vkCmdBindVertexBuffers2, vk::PFN_vkVoidFunction>(
1996
72
                        Self::cmd_bind_vertex_buffers2,
1997
72
                    )
1998
72
                },
1999
72
            },
2000
72
            VulkanCommand {
2001
72
                name: "vkCmdBindVertexBuffers2EXT",
2002
72
                features: smallvec![
2003
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
2004
0
                    Feature::Extension(Extension::EXTShaderObject)
2005
                ],
2006
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindVertexBuffers2),
2007
72
                proc: unsafe {
2008
72
                    std::mem::transmute::<vk::PFN_vkCmdBindVertexBuffers2, vk::PFN_vkVoidFunction>(
2009
72
                        Self::cmd_bind_vertex_buffers2,
2010
72
                    )
2011
72
                },
2012
72
            },
2013
72
            VulkanCommand {
2014
72
                name: "vkCmdBlitImage",
2015
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2016
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBlitImage),
2017
72
                proc: unsafe {
2018
72
                    std::mem::transmute::<vk::PFN_vkCmdBlitImage, vk::PFN_vkVoidFunction>(
2019
72
                        Self::cmd_blit_image,
2020
72
                    )
2021
72
                },
2022
72
            },
2023
72
            VulkanCommand {
2024
72
                name: "vkCmdBlitImage2",
2025
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2026
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBlitImage2),
2027
72
                proc: unsafe {
2028
72
                    std::mem::transmute::<vk::PFN_vkCmdBlitImage2, vk::PFN_vkVoidFunction>(
2029
72
                        Self::cmd_blit_image2,
2030
72
                    )
2031
72
                },
2032
72
            },
2033
72
            VulkanCommand {
2034
72
                name: "vkCmdBlitImage2KHR",
2035
72
                features: smallvec![
Feature::Extension(Extension::KHRCopyCommands2)0
],
2036
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBlitImage2),
2037
72
                proc: unsafe {
2038
72
                    std::mem::transmute::<vk::PFN_vkCmdBlitImage2, vk::PFN_vkVoidFunction>(
2039
72
                        Self::cmd_blit_image2,
2040
72
                    )
2041
72
                },
2042
72
            },
2043
72
            VulkanCommand {
2044
72
                name: "vkCmdBuildAccelerationStructureNV",
2045
72
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
2046
72
                hooked: hooked_commands
2047
72
                    .contains(&LayerVulkanCommand::CmdBuildAccelerationStructureNv),
2048
72
                proc: unsafe {
2049
72
                    std::mem::transmute::<
2050
72
                        vk::PFN_vkCmdBuildAccelerationStructureNV,
2051
72
                        vk::PFN_vkVoidFunction,
2052
72
                    >(Self::cmd_build_acceleration_structure_nv)
2053
72
                },
2054
72
            },
2055
72
            VulkanCommand {
2056
72
                name: "vkCmdBuildMicromapsEXT",
2057
72
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
2058
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBuildMicromapsExt),
2059
72
                proc: unsafe {
2060
72
                    std::mem::transmute::<vk::PFN_vkCmdBuildMicromapsEXT, vk::PFN_vkVoidFunction>(
2061
72
                        Self::cmd_build_micromaps_ext,
2062
72
                    )
2063
72
                },
2064
72
            },
2065
72
            VulkanCommand {
2066
72
                name: "vkCmdClearAttachments",
2067
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2068
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdClearAttachments),
2069
72
                proc: unsafe {
2070
72
                    std::mem::transmute::<vk::PFN_vkCmdClearAttachments, vk::PFN_vkVoidFunction>(
2071
72
                        Self::cmd_clear_attachments,
2072
72
                    )
2073
72
                },
2074
72
            },
2075
72
            VulkanCommand {
2076
72
                name: "vkCmdClearColorImage",
2077
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2078
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdClearColorImage),
2079
72
                proc: unsafe {
2080
72
                    std::mem::transmute::<vk::PFN_vkCmdClearColorImage, vk::PFN_vkVoidFunction>(
2081
72
                        Self::cmd_clear_color_image,
2082
72
                    )
2083
72
                },
2084
72
            },
2085
72
            VulkanCommand {
2086
72
                name: "vkCmdClearDepthStencilImage",
2087
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2088
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdClearDepthStencilImage),
2089
72
                proc: unsafe {
2090
72
                    std::mem::transmute::<vk::PFN_vkCmdClearDepthStencilImage, vk::PFN_vkVoidFunction>(
2091
72
                        Self::cmd_clear_depth_stencil_image,
2092
72
                    )
2093
72
                },
2094
72
            },
2095
72
            VulkanCommand {
2096
72
                name: "vkCmdControlVideoCodingKHR",
2097
72
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
2098
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdControlVideoCodingKhr),
2099
72
                proc: unsafe {
2100
72
                    std::mem::transmute::<vk::PFN_vkCmdControlVideoCodingKHR, vk::PFN_vkVoidFunction>(
2101
72
                        Self::cmd_control_video_coding_khr,
2102
72
                    )
2103
72
                },
2104
72
            },
2105
72
            VulkanCommand {
2106
72
                name: "vkCmdCopyAccelerationStructureKHR",
2107
72
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
2108
72
                hooked: hooked_commands
2109
72
                    .contains(&LayerVulkanCommand::CmdCopyAccelerationStructureKhr),
2110
72
                proc: unsafe {
2111
72
                    std::mem::transmute::<
2112
72
                        vk::PFN_vkCmdCopyAccelerationStructureKHR,
2113
72
                        vk::PFN_vkVoidFunction,
2114
72
                    >(Self::cmd_copy_acceleration_structure_khr)
2115
72
                },
2116
72
            },
2117
72
            VulkanCommand {
2118
72
                name: "vkCmdCopyAccelerationStructureNV",
2119
72
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
2120
72
                hooked: hooked_commands
2121
72
                    .contains(&LayerVulkanCommand::CmdCopyAccelerationStructureNv),
2122
72
                proc: unsafe {
2123
72
                    std::mem::transmute::<
2124
72
                        vk::PFN_vkCmdCopyAccelerationStructureNV,
2125
72
                        vk::PFN_vkVoidFunction,
2126
72
                    >(Self::cmd_copy_acceleration_structure_nv)
2127
72
                },
2128
72
            },
2129
72
            VulkanCommand {
2130
72
                name: "vkCmdCopyAccelerationStructureToMemoryKHR",
2131
72
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
2132
72
                hooked: hooked_commands
2133
72
                    .contains(&LayerVulkanCommand::CmdCopyAccelerationStructureToMemoryKhr),
2134
72
                proc: unsafe {
2135
72
                    std::mem::transmute::<
2136
72
                        vk::PFN_vkCmdCopyAccelerationStructureToMemoryKHR,
2137
72
                        vk::PFN_vkVoidFunction,
2138
72
                    >(Self::cmd_copy_acceleration_structure_to_memory_khr)
2139
72
                },
2140
72
            },
2141
72
            VulkanCommand {
2142
72
                name: "vkCmdCopyBuffer",
2143
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2144
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyBuffer),
2145
72
                proc: unsafe {
2146
72
                    std::mem::transmute::<vk::PFN_vkCmdCopyBuffer, vk::PFN_vkVoidFunction>(
2147
72
                        Self::cmd_copy_buffer,
2148
72
                    )
2149
72
                },
2150
72
            },
2151
72
            VulkanCommand {
2152
72
                name: "vkCmdCopyBuffer2",
2153
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2154
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyBuffer2),
2155
72
                proc: unsafe {
2156
72
                    std::mem::transmute::<vk::PFN_vkCmdCopyBuffer2, vk::PFN_vkVoidFunction>(
2157
72
                        Self::cmd_copy_buffer2,
2158
72
                    )
2159
72
                },
2160
72
            },
2161
72
            VulkanCommand {
2162
72
                name: "vkCmdCopyBuffer2KHR",
2163
72
                features: smallvec![
Feature::Extension(Extension::KHRCopyCommands2)0
],
2164
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyBuffer2),
2165
72
                proc: unsafe {
2166
72
                    std::mem::transmute::<vk::PFN_vkCmdCopyBuffer2, vk::PFN_vkVoidFunction>(
2167
72
                        Self::cmd_copy_buffer2,
2168
72
                    )
2169
72
                },
2170
72
            },
2171
72
            VulkanCommand {
2172
72
                name: "vkCmdCopyBufferToImage",
2173
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2174
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyBufferToImage),
2175
72
                proc: unsafe {
2176
72
                    std::mem::transmute::<vk::PFN_vkCmdCopyBufferToImage, vk::PFN_vkVoidFunction>(
2177
72
                        Self::cmd_copy_buffer_to_image,
2178
72
                    )
2179
72
                },
2180
72
            },
2181
72
            VulkanCommand {
2182
72
                name: "vkCmdCopyBufferToImage2",
2183
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2184
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyBufferToImage2),
2185
72
                proc: unsafe {
2186
72
                    std::mem::transmute::<vk::PFN_vkCmdCopyBufferToImage2, vk::PFN_vkVoidFunction>(
2187
72
                        Self::cmd_copy_buffer_to_image2,
2188
72
                    )
2189
72
                },
2190
72
            },
2191
72
            VulkanCommand {
2192
72
                name: "vkCmdCopyBufferToImage2KHR",
2193
72
                features: smallvec![
Feature::Extension(Extension::KHRCopyCommands2)0
],
2194
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyBufferToImage2),
2195
72
                proc: unsafe {
2196
72
                    std::mem::transmute::<vk::PFN_vkCmdCopyBufferToImage2, vk::PFN_vkVoidFunction>(
2197
72
                        Self::cmd_copy_buffer_to_image2,
2198
72
                    )
2199
72
                },
2200
72
            },
2201
72
            VulkanCommand {
2202
72
                name: "vkCmdCopyImage",
2203
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2204
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyImage),
2205
72
                proc: unsafe {
2206
72
                    std::mem::transmute::<vk::PFN_vkCmdCopyImage, vk::PFN_vkVoidFunction>(
2207
72
                        Self::cmd_copy_image,
2208
72
                    )
2209
72
                },
2210
72
            },
2211
72
            VulkanCommand {
2212
72
                name: "vkCmdCopyImage2",
2213
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2214
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyImage2),
2215
72
                proc: unsafe {
2216
72
                    std::mem::transmute::<vk::PFN_vkCmdCopyImage2, vk::PFN_vkVoidFunction>(
2217
72
                        Self::cmd_copy_image2,
2218
72
                    )
2219
72
                },
2220
72
            },
2221
72
            VulkanCommand {
2222
72
                name: "vkCmdCopyImage2KHR",
2223
72
                features: smallvec![
Feature::Extension(Extension::KHRCopyCommands2)0
],
2224
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyImage2),
2225
72
                proc: unsafe {
2226
72
                    std::mem::transmute::<vk::PFN_vkCmdCopyImage2, vk::PFN_vkVoidFunction>(
2227
72
                        Self::cmd_copy_image2,
2228
72
                    )
2229
72
                },
2230
72
            },
2231
72
            VulkanCommand {
2232
72
                name: "vkCmdCopyImageToBuffer",
2233
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2234
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyImageToBuffer),
2235
72
                proc: unsafe {
2236
72
                    std::mem::transmute::<vk::PFN_vkCmdCopyImageToBuffer, vk::PFN_vkVoidFunction>(
2237
72
                        Self::cmd_copy_image_to_buffer,
2238
72
                    )
2239
72
                },
2240
72
            },
2241
72
            VulkanCommand {
2242
72
                name: "vkCmdCopyImageToBuffer2",
2243
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2244
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyImageToBuffer2),
2245
72
                proc: unsafe {
2246
72
                    std::mem::transmute::<vk::PFN_vkCmdCopyImageToBuffer2, vk::PFN_vkVoidFunction>(
2247
72
                        Self::cmd_copy_image_to_buffer2,
2248
72
                    )
2249
72
                },
2250
72
            },
2251
72
            VulkanCommand {
2252
72
                name: "vkCmdCopyImageToBuffer2KHR",
2253
72
                features: smallvec![
Feature::Extension(Extension::KHRCopyCommands2)0
],
2254
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyImageToBuffer2),
2255
72
                proc: unsafe {
2256
72
                    std::mem::transmute::<vk::PFN_vkCmdCopyImageToBuffer2, vk::PFN_vkVoidFunction>(
2257
72
                        Self::cmd_copy_image_to_buffer2,
2258
72
                    )
2259
72
                },
2260
72
            },
2261
72
            VulkanCommand {
2262
72
                name: "vkCmdCopyMemoryIndirectNV",
2263
72
                features: smallvec![
Feature::Extension(Extension::NVCopyMemoryIndirect)0
],
2264
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyMemoryIndirectNv),
2265
72
                proc: unsafe {
2266
72
                    std::mem::transmute::<vk::PFN_vkCmdCopyMemoryIndirectNV, vk::PFN_vkVoidFunction>(
2267
72
                        Self::cmd_copy_memory_indirect_nv,
2268
72
                    )
2269
72
                },
2270
72
            },
2271
72
            VulkanCommand {
2272
72
                name: "vkCmdCopyMemoryToAccelerationStructureKHR",
2273
72
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
2274
72
                hooked: hooked_commands
2275
72
                    .contains(&LayerVulkanCommand::CmdCopyMemoryToAccelerationStructureKhr),
2276
72
                proc: unsafe {
2277
72
                    std::mem::transmute::<
2278
72
                        vk::PFN_vkCmdCopyMemoryToAccelerationStructureKHR,
2279
72
                        vk::PFN_vkVoidFunction,
2280
72
                    >(Self::cmd_copy_memory_to_acceleration_structure_khr)
2281
72
                },
2282
72
            },
2283
72
            VulkanCommand {
2284
72
                name: "vkCmdCopyMemoryToImageIndirectNV",
2285
72
                features: smallvec![
Feature::Extension(Extension::NVCopyMemoryIndirect)0
],
2286
72
                hooked: hooked_commands
2287
72
                    .contains(&LayerVulkanCommand::CmdCopyMemoryToImageIndirectNv),
2288
72
                proc: unsafe {
2289
72
                    std::mem::transmute::<
2290
72
                        vk::PFN_vkCmdCopyMemoryToImageIndirectNV,
2291
72
                        vk::PFN_vkVoidFunction,
2292
72
                    >(Self::cmd_copy_memory_to_image_indirect_nv)
2293
72
                },
2294
72
            },
2295
72
            VulkanCommand {
2296
72
                name: "vkCmdCopyMemoryToMicromapEXT",
2297
72
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
2298
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyMemoryToMicromapExt),
2299
72
                proc: unsafe {
2300
72
                    std::mem::transmute::<
2301
72
                        vk::PFN_vkCmdCopyMemoryToMicromapEXT,
2302
72
                        vk::PFN_vkVoidFunction,
2303
72
                    >(Self::cmd_copy_memory_to_micromap_ext)
2304
72
                },
2305
72
            },
2306
72
            VulkanCommand {
2307
72
                name: "vkCmdCopyMicromapEXT",
2308
72
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
2309
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyMicromapExt),
2310
72
                proc: unsafe {
2311
72
                    std::mem::transmute::<vk::PFN_vkCmdCopyMicromapEXT, vk::PFN_vkVoidFunction>(
2312
72
                        Self::cmd_copy_micromap_ext,
2313
72
                    )
2314
72
                },
2315
72
            },
2316
72
            VulkanCommand {
2317
72
                name: "vkCmdCopyMicromapToMemoryEXT",
2318
72
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
2319
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyMicromapToMemoryExt),
2320
72
                proc: unsafe {
2321
72
                    std::mem::transmute::<
2322
72
                        vk::PFN_vkCmdCopyMicromapToMemoryEXT,
2323
72
                        vk::PFN_vkVoidFunction,
2324
72
                    >(Self::cmd_copy_micromap_to_memory_ext)
2325
72
                },
2326
72
            },
2327
72
            VulkanCommand {
2328
72
                name: "vkCmdCopyQueryPoolResults",
2329
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2330
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyQueryPoolResults),
2331
72
                proc: unsafe {
2332
72
                    std::mem::transmute::<vk::PFN_vkCmdCopyQueryPoolResults, vk::PFN_vkVoidFunction>(
2333
72
                        Self::cmd_copy_query_pool_results,
2334
72
                    )
2335
72
                },
2336
72
            },
2337
72
            VulkanCommand {
2338
72
                name: "vkCmdCuLaunchKernelNVX",
2339
72
                features: smallvec![
Feature::Extension(Extension::NVXBinaryImport)0
],
2340
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCuLaunchKernelNvx),
2341
72
                proc: unsafe {
2342
72
                    std::mem::transmute::<vk::PFN_vkCmdCuLaunchKernelNVX, vk::PFN_vkVoidFunction>(
2343
72
                        Self::cmd_cu_launch_kernel_nvx,
2344
72
                    )
2345
72
                },
2346
72
            },
2347
72
            VulkanCommand {
2348
72
                name: "vkCmdDebugMarkerBeginEXT",
2349
72
                features: smallvec![
Feature::Extension(Extension::EXTDebugMarker)0
],
2350
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDebugMarkerBeginExt),
2351
72
                proc: unsafe {
2352
72
                    std::mem::transmute::<vk::PFN_vkCmdDebugMarkerBeginEXT, vk::PFN_vkVoidFunction>(
2353
72
                        Self::cmd_debug_marker_begin_ext,
2354
72
                    )
2355
72
                },
2356
72
            },
2357
72
            VulkanCommand {
2358
72
                name: "vkCmdDebugMarkerEndEXT",
2359
72
                features: smallvec![
Feature::Extension(Extension::EXTDebugMarker)0
],
2360
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDebugMarkerEndExt),
2361
72
                proc: unsafe {
2362
72
                    std::mem::transmute::<vk::PFN_vkCmdDebugMarkerEndEXT, vk::PFN_vkVoidFunction>(
2363
72
                        Self::cmd_debug_marker_end_ext,
2364
72
                    )
2365
72
                },
2366
72
            },
2367
72
            VulkanCommand {
2368
72
                name: "vkCmdDebugMarkerInsertEXT",
2369
72
                features: smallvec![
Feature::Extension(Extension::EXTDebugMarker)0
],
2370
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDebugMarkerInsertExt),
2371
72
                proc: unsafe {
2372
72
                    std::mem::transmute::<vk::PFN_vkCmdDebugMarkerInsertEXT, vk::PFN_vkVoidFunction>(
2373
72
                        Self::cmd_debug_marker_insert_ext,
2374
72
                    )
2375
72
                },
2376
72
            },
2377
72
            VulkanCommand {
2378
72
                name: "vkCmdDecodeVideoKHR",
2379
72
                features: smallvec![
Feature::Extension(Extension::KHRVideoDecodeQueue)0
],
2380
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDecodeVideoKhr),
2381
72
                proc: unsafe {
2382
72
                    std::mem::transmute::<vk::PFN_vkCmdDecodeVideoKHR, vk::PFN_vkVoidFunction>(
2383
72
                        Self::cmd_decode_video_khr,
2384
72
                    )
2385
72
                },
2386
72
            },
2387
72
            VulkanCommand {
2388
72
                name: "vkCmdDecompressMemoryIndirectCountNV",
2389
72
                features: smallvec![
Feature::Extension(Extension::NVMemoryDecompression)0
],
2390
72
                hooked: hooked_commands
2391
72
                    .contains(&LayerVulkanCommand::CmdDecompressMemoryIndirectCountNv),
2392
72
                proc: unsafe {
2393
72
                    std::mem::transmute::<
2394
72
                        vk::PFN_vkCmdDecompressMemoryIndirectCountNV,
2395
72
                        vk::PFN_vkVoidFunction,
2396
72
                    >(Self::cmd_decompress_memory_indirect_count_nv)
2397
72
                },
2398
72
            },
2399
72
            VulkanCommand {
2400
72
                name: "vkCmdDecompressMemoryNV",
2401
72
                features: smallvec![
Feature::Extension(Extension::NVMemoryDecompression)0
],
2402
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDecompressMemoryNv),
2403
72
                proc: unsafe {
2404
72
                    std::mem::transmute::<vk::PFN_vkCmdDecompressMemoryNV, vk::PFN_vkVoidFunction>(
2405
72
                        Self::cmd_decompress_memory_nv,
2406
72
                    )
2407
72
                },
2408
72
            },
2409
72
            VulkanCommand {
2410
72
                name: "vkCmdDispatch",
2411
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2412
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDispatch),
2413
72
                proc: unsafe {
2414
72
                    std::mem::transmute::<vk::PFN_vkCmdDispatch, vk::PFN_vkVoidFunction>(
2415
72
                        Self::cmd_dispatch,
2416
72
                    )
2417
72
                },
2418
72
            },
2419
72
            VulkanCommand {
2420
72
                name: "vkCmdDispatchBase",
2421
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
2422
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDispatchBase),
2423
72
                proc: unsafe {
2424
72
                    std::mem::transmute::<vk::PFN_vkCmdDispatchBase, vk::PFN_vkVoidFunction>(
2425
72
                        Self::cmd_dispatch_base,
2426
72
                    )
2427
72
                },
2428
72
            },
2429
72
            VulkanCommand {
2430
72
                name: "vkCmdDispatchBaseKHR",
2431
72
                features: smallvec![
Feature::Extension(Extension::KHRDeviceGroup)0
],
2432
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDispatchBase),
2433
72
                proc: unsafe {
2434
72
                    std::mem::transmute::<vk::PFN_vkCmdDispatchBase, vk::PFN_vkVoidFunction>(
2435
72
                        Self::cmd_dispatch_base,
2436
72
                    )
2437
72
                },
2438
72
            },
2439
72
            VulkanCommand {
2440
72
                name: "vkCmdDispatchIndirect",
2441
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2442
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDispatchIndirect),
2443
72
                proc: unsafe {
2444
72
                    std::mem::transmute::<vk::PFN_vkCmdDispatchIndirect, vk::PFN_vkVoidFunction>(
2445
72
                        Self::cmd_dispatch_indirect,
2446
72
                    )
2447
72
                },
2448
72
            },
2449
72
            VulkanCommand {
2450
72
                name: "vkCmdDraw",
2451
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2452
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDraw),
2453
72
                proc: unsafe {
2454
72
                    std::mem::transmute::<vk::PFN_vkCmdDraw, vk::PFN_vkVoidFunction>(Self::cmd_draw)
2455
72
                },
2456
72
            },
2457
72
            VulkanCommand {
2458
72
                name: "vkCmdDrawIndexed",
2459
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2460
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndexed),
2461
72
                proc: unsafe {
2462
72
                    std::mem::transmute::<vk::PFN_vkCmdDrawIndexed, vk::PFN_vkVoidFunction>(
2463
72
                        Self::cmd_draw_indexed,
2464
72
                    )
2465
72
                },
2466
72
            },
2467
72
            VulkanCommand {
2468
72
                name: "vkCmdDrawIndexedIndirect",
2469
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2470
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndexedIndirect),
2471
72
                proc: unsafe {
2472
72
                    std::mem::transmute::<vk::PFN_vkCmdDrawIndexedIndirect, vk::PFN_vkVoidFunction>(
2473
72
                        Self::cmd_draw_indexed_indirect,
2474
72
                    )
2475
72
                },
2476
72
            },
2477
72
            VulkanCommand {
2478
72
                name: "vkCmdDrawIndexedIndirectCount",
2479
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
2480
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndexedIndirectCount),
2481
72
                proc: unsafe {
2482
72
                    std::mem::transmute::<
2483
72
                        vk::PFN_vkCmdDrawIndexedIndirectCount,
2484
72
                        vk::PFN_vkVoidFunction,
2485
72
                    >(Self::cmd_draw_indexed_indirect_count)
2486
72
                },
2487
72
            },
2488
72
            VulkanCommand {
2489
72
                name: "vkCmdDrawIndexedIndirectCountAMD",
2490
72
                features: smallvec![
Feature::Extension(Extension::AMDDrawIndirectCount)0
],
2491
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndexedIndirectCount),
2492
72
                proc: unsafe {
2493
72
                    std::mem::transmute::<
2494
72
                        vk::PFN_vkCmdDrawIndexedIndirectCount,
2495
72
                        vk::PFN_vkVoidFunction,
2496
72
                    >(Self::cmd_draw_indexed_indirect_count)
2497
72
                },
2498
72
            },
2499
72
            VulkanCommand {
2500
72
                name: "vkCmdDrawIndexedIndirectCountKHR",
2501
72
                features: smallvec![
Feature::Extension(Extension::KHRDrawIndirectCount)0
],
2502
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndexedIndirectCount),
2503
72
                proc: unsafe {
2504
72
                    std::mem::transmute::<
2505
72
                        vk::PFN_vkCmdDrawIndexedIndirectCount,
2506
72
                        vk::PFN_vkVoidFunction,
2507
72
                    >(Self::cmd_draw_indexed_indirect_count)
2508
72
                },
2509
72
            },
2510
72
            VulkanCommand {
2511
72
                name: "vkCmdDrawIndirect",
2512
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2513
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndirect),
2514
72
                proc: unsafe {
2515
72
                    std::mem::transmute::<vk::PFN_vkCmdDrawIndirect, vk::PFN_vkVoidFunction>(
2516
72
                        Self::cmd_draw_indirect,
2517
72
                    )
2518
72
                },
2519
72
            },
2520
72
            VulkanCommand {
2521
72
                name: "vkCmdDrawIndirectByteCountEXT",
2522
72
                features: smallvec![
Feature::Extension(Extension::EXTTransformFeedback)0
],
2523
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndirectByteCountExt),
2524
72
                proc: unsafe {
2525
72
                    std::mem::transmute::<
2526
72
                        vk::PFN_vkCmdDrawIndirectByteCountEXT,
2527
72
                        vk::PFN_vkVoidFunction,
2528
72
                    >(Self::cmd_draw_indirect_byte_count_ext)
2529
72
                },
2530
72
            },
2531
72
            VulkanCommand {
2532
72
                name: "vkCmdDrawIndirectCount",
2533
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
2534
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndirectCount),
2535
72
                proc: unsafe {
2536
72
                    std::mem::transmute::<vk::PFN_vkCmdDrawIndirectCount, vk::PFN_vkVoidFunction>(
2537
72
                        Self::cmd_draw_indirect_count,
2538
72
                    )
2539
72
                },
2540
72
            },
2541
72
            VulkanCommand {
2542
72
                name: "vkCmdDrawIndirectCountAMD",
2543
72
                features: smallvec![
Feature::Extension(Extension::AMDDrawIndirectCount)0
],
2544
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndirectCount),
2545
72
                proc: unsafe {
2546
72
                    std::mem::transmute::<vk::PFN_vkCmdDrawIndirectCount, vk::PFN_vkVoidFunction>(
2547
72
                        Self::cmd_draw_indirect_count,
2548
72
                    )
2549
72
                },
2550
72
            },
2551
72
            VulkanCommand {
2552
72
                name: "vkCmdDrawIndirectCountKHR",
2553
72
                features: smallvec![
Feature::Extension(Extension::KHRDrawIndirectCount)0
],
2554
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndirectCount),
2555
72
                proc: unsafe {
2556
72
                    std::mem::transmute::<vk::PFN_vkCmdDrawIndirectCount, vk::PFN_vkVoidFunction>(
2557
72
                        Self::cmd_draw_indirect_count,
2558
72
                    )
2559
72
                },
2560
72
            },
2561
72
            VulkanCommand {
2562
72
                name: "vkCmdDrawMeshTasksEXT",
2563
72
                features: smallvec![
Feature::Extension(Extension::EXTMeshShader)0
],
2564
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawMeshTasksExt),
2565
72
                proc: unsafe {
2566
72
                    std::mem::transmute::<vk::PFN_vkCmdDrawMeshTasksEXT, vk::PFN_vkVoidFunction>(
2567
72
                        Self::cmd_draw_mesh_tasks_ext,
2568
72
                    )
2569
72
                },
2570
72
            },
2571
72
            VulkanCommand {
2572
72
                name: "vkCmdDrawMeshTasksIndirectCountEXT",
2573
72
                features: smallvec![
Feature::Extension(Extension::EXTMeshShader)0
],
2574
72
                hooked: hooked_commands
2575
72
                    .contains(&LayerVulkanCommand::CmdDrawMeshTasksIndirectCountExt),
2576
72
                proc: unsafe {
2577
72
                    std::mem::transmute::<
2578
72
                        vk::PFN_vkCmdDrawMeshTasksIndirectCountEXT,
2579
72
                        vk::PFN_vkVoidFunction,
2580
72
                    >(Self::cmd_draw_mesh_tasks_indirect_count_ext)
2581
72
                },
2582
72
            },
2583
72
            VulkanCommand {
2584
72
                name: "vkCmdDrawMeshTasksIndirectCountNV",
2585
72
                features: smallvec![
Feature::Extension(Extension::NVMeshShader)0
],
2586
72
                hooked: hooked_commands
2587
72
                    .contains(&LayerVulkanCommand::CmdDrawMeshTasksIndirectCountNv),
2588
72
                proc: unsafe {
2589
72
                    std::mem::transmute::<
2590
72
                        vk::PFN_vkCmdDrawMeshTasksIndirectCountNV,
2591
72
                        vk::PFN_vkVoidFunction,
2592
72
                    >(Self::cmd_draw_mesh_tasks_indirect_count_nv)
2593
72
                },
2594
72
            },
2595
72
            VulkanCommand {
2596
72
                name: "vkCmdDrawMeshTasksIndirectEXT",
2597
72
                features: smallvec![
Feature::Extension(Extension::EXTMeshShader)0
],
2598
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawMeshTasksIndirectExt),
2599
72
                proc: unsafe {
2600
72
                    std::mem::transmute::<
2601
72
                        vk::PFN_vkCmdDrawMeshTasksIndirectEXT,
2602
72
                        vk::PFN_vkVoidFunction,
2603
72
                    >(Self::cmd_draw_mesh_tasks_indirect_ext)
2604
72
                },
2605
72
            },
2606
72
            VulkanCommand {
2607
72
                name: "vkCmdDrawMeshTasksIndirectNV",
2608
72
                features: smallvec![
Feature::Extension(Extension::NVMeshShader)0
],
2609
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawMeshTasksIndirectNv),
2610
72
                proc: unsafe {
2611
72
                    std::mem::transmute::<
2612
72
                        vk::PFN_vkCmdDrawMeshTasksIndirectNV,
2613
72
                        vk::PFN_vkVoidFunction,
2614
72
                    >(Self::cmd_draw_mesh_tasks_indirect_nv)
2615
72
                },
2616
72
            },
2617
72
            VulkanCommand {
2618
72
                name: "vkCmdDrawMeshTasksNV",
2619
72
                features: smallvec![
Feature::Extension(Extension::NVMeshShader)0
],
2620
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawMeshTasksNv),
2621
72
                proc: unsafe {
2622
72
                    std::mem::transmute::<vk::PFN_vkCmdDrawMeshTasksNV, vk::PFN_vkVoidFunction>(
2623
72
                        Self::cmd_draw_mesh_tasks_nv,
2624
72
                    )
2625
72
                },
2626
72
            },
2627
72
            VulkanCommand {
2628
72
                name: "vkCmdDrawMultiEXT",
2629
72
                features: smallvec![
Feature::Extension(Extension::EXTMultiDraw)0
],
2630
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawMultiExt),
2631
72
                proc: unsafe {
2632
72
                    std::mem::transmute::<vk::PFN_vkCmdDrawMultiEXT, vk::PFN_vkVoidFunction>(
2633
72
                        Self::cmd_draw_multi_ext,
2634
72
                    )
2635
72
                },
2636
72
            },
2637
72
            VulkanCommand {
2638
72
                name: "vkCmdDrawMultiIndexedEXT",
2639
72
                features: smallvec![
Feature::Extension(Extension::EXTMultiDraw)0
],
2640
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawMultiIndexedExt),
2641
72
                proc: unsafe {
2642
72
                    std::mem::transmute::<vk::PFN_vkCmdDrawMultiIndexedEXT, vk::PFN_vkVoidFunction>(
2643
72
                        Self::cmd_draw_multi_indexed_ext,
2644
72
                    )
2645
72
                },
2646
72
            },
2647
72
            VulkanCommand {
2648
72
                name: "vkCmdEncodeVideoKHR",
2649
72
                features: smallvec![
Feature::Extension(Extension::KHRVideoEncodeQueue)0
],
2650
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEncodeVideoKhr),
2651
72
                proc: unsafe {
2652
72
                    std::mem::transmute::<vk::PFN_vkCmdEncodeVideoKHR, vk::PFN_vkVoidFunction>(
2653
72
                        Self::cmd_encode_video_khr,
2654
72
                    )
2655
72
                },
2656
72
            },
2657
72
            VulkanCommand {
2658
72
                name: "vkCmdEndConditionalRenderingEXT",
2659
72
                features: smallvec![
Feature::Extension(Extension::EXTConditionalRendering)0
],
2660
72
                hooked: hooked_commands
2661
72
                    .contains(&LayerVulkanCommand::CmdEndConditionalRenderingExt),
2662
72
                proc: unsafe {
2663
72
                    std::mem::transmute::<
2664
72
                        vk::PFN_vkCmdEndConditionalRenderingEXT,
2665
72
                        vk::PFN_vkVoidFunction,
2666
72
                    >(Self::cmd_end_conditional_rendering_ext)
2667
72
                },
2668
72
            },
2669
72
            VulkanCommand {
2670
72
                name: "vkCmdEndDebugUtilsLabelEXT",
2671
72
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
2672
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndDebugUtilsLabelExt),
2673
72
                proc: unsafe {
2674
72
                    std::mem::transmute::<vk::PFN_vkCmdEndDebugUtilsLabelEXT, vk::PFN_vkVoidFunction>(
2675
72
                        Self::cmd_end_debug_utils_label_ext,
2676
72
                    )
2677
72
                },
2678
72
            },
2679
72
            VulkanCommand {
2680
72
                name: "vkCmdEndQuery",
2681
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2682
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndQuery),
2683
72
                proc: unsafe {
2684
72
                    std::mem::transmute::<vk::PFN_vkCmdEndQuery, vk::PFN_vkVoidFunction>(
2685
72
                        Self::cmd_end_query,
2686
72
                    )
2687
72
                },
2688
72
            },
2689
72
            VulkanCommand {
2690
72
                name: "vkCmdEndQueryIndexedEXT",
2691
72
                features: smallvec![
Feature::Extension(Extension::EXTTransformFeedback)0
],
2692
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndQueryIndexedExt),
2693
72
                proc: unsafe {
2694
72
                    std::mem::transmute::<vk::PFN_vkCmdEndQueryIndexedEXT, vk::PFN_vkVoidFunction>(
2695
72
                        Self::cmd_end_query_indexed_ext,
2696
72
                    )
2697
72
                },
2698
72
            },
2699
72
            VulkanCommand {
2700
72
                name: "vkCmdEndRenderPass",
2701
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2702
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndRenderPass),
2703
72
                proc: unsafe {
2704
72
                    std::mem::transmute::<vk::PFN_vkCmdEndRenderPass, vk::PFN_vkVoidFunction>(
2705
72
                        Self::cmd_end_render_pass,
2706
72
                    )
2707
72
                },
2708
72
            },
2709
72
            VulkanCommand {
2710
72
                name: "vkCmdEndRenderPass2",
2711
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
2712
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndRenderPass2),
2713
72
                proc: unsafe {
2714
72
                    std::mem::transmute::<vk::PFN_vkCmdEndRenderPass2, vk::PFN_vkVoidFunction>(
2715
72
                        Self::cmd_end_render_pass2,
2716
72
                    )
2717
72
                },
2718
72
            },
2719
72
            VulkanCommand {
2720
72
                name: "vkCmdEndRenderPass2KHR",
2721
72
                features: smallvec![
Feature::Extension(Extension::KHRCreateRenderpass2)0
],
2722
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndRenderPass2),
2723
72
                proc: unsafe {
2724
72
                    std::mem::transmute::<vk::PFN_vkCmdEndRenderPass2, vk::PFN_vkVoidFunction>(
2725
72
                        Self::cmd_end_render_pass2,
2726
72
                    )
2727
72
                },
2728
72
            },
2729
72
            VulkanCommand {
2730
72
                name: "vkCmdEndRendering",
2731
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2732
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndRendering),
2733
72
                proc: unsafe {
2734
72
                    std::mem::transmute::<vk::PFN_vkCmdEndRendering, vk::PFN_vkVoidFunction>(
2735
72
                        Self::cmd_end_rendering,
2736
72
                    )
2737
72
                },
2738
72
            },
2739
72
            VulkanCommand {
2740
72
                name: "vkCmdEndRenderingKHR",
2741
72
                features: smallvec![
Feature::Extension(Extension::KHRDynamicRendering)0
],
2742
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndRendering),
2743
72
                proc: unsafe {
2744
72
                    std::mem::transmute::<vk::PFN_vkCmdEndRendering, vk::PFN_vkVoidFunction>(
2745
72
                        Self::cmd_end_rendering,
2746
72
                    )
2747
72
                },
2748
72
            },
2749
72
            VulkanCommand {
2750
72
                name: "vkCmdEndTransformFeedbackEXT",
2751
72
                features: smallvec![
Feature::Extension(Extension::EXTTransformFeedback)0
],
2752
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndTransformFeedbackExt),
2753
72
                proc: unsafe {
2754
72
                    std::mem::transmute::<
2755
72
                        vk::PFN_vkCmdEndTransformFeedbackEXT,
2756
72
                        vk::PFN_vkVoidFunction,
2757
72
                    >(Self::cmd_end_transform_feedback_ext)
2758
72
                },
2759
72
            },
2760
72
            VulkanCommand {
2761
72
                name: "vkCmdEndVideoCodingKHR",
2762
72
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
2763
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndVideoCodingKhr),
2764
72
                proc: unsafe {
2765
72
                    std::mem::transmute::<vk::PFN_vkCmdEndVideoCodingKHR, vk::PFN_vkVoidFunction>(
2766
72
                        Self::cmd_end_video_coding_khr,
2767
72
                    )
2768
72
                },
2769
72
            },
2770
72
            VulkanCommand {
2771
72
                name: "vkCmdExecuteCommands",
2772
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2773
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdExecuteCommands),
2774
72
                proc: unsafe {
2775
72
                    std::mem::transmute::<vk::PFN_vkCmdExecuteCommands, vk::PFN_vkVoidFunction>(
2776
72
                        Self::cmd_execute_commands,
2777
72
                    )
2778
72
                },
2779
72
            },
2780
72
            VulkanCommand {
2781
72
                name: "vkCmdExecuteGeneratedCommandsNV",
2782
72
                features: smallvec![
Feature::Extension(Extension::NVDeviceGeneratedCommands)0
],
2783
72
                hooked: hooked_commands
2784
72
                    .contains(&LayerVulkanCommand::CmdExecuteGeneratedCommandsNv),
2785
72
                proc: unsafe {
2786
72
                    std::mem::transmute::<
2787
72
                        vk::PFN_vkCmdExecuteGeneratedCommandsNV,
2788
72
                        vk::PFN_vkVoidFunction,
2789
72
                    >(Self::cmd_execute_generated_commands_nv)
2790
72
                },
2791
72
            },
2792
72
            VulkanCommand {
2793
72
                name: "vkCmdFillBuffer",
2794
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2795
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdFillBuffer),
2796
72
                proc: unsafe {
2797
72
                    std::mem::transmute::<vk::PFN_vkCmdFillBuffer, vk::PFN_vkVoidFunction>(
2798
72
                        Self::cmd_fill_buffer,
2799
72
                    )
2800
72
                },
2801
72
            },
2802
72
            VulkanCommand {
2803
72
                name: "vkCmdInsertDebugUtilsLabelEXT",
2804
72
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
2805
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdInsertDebugUtilsLabelExt),
2806
72
                proc: unsafe {
2807
72
                    std::mem::transmute::<
2808
72
                        vk::PFN_vkCmdInsertDebugUtilsLabelEXT,
2809
72
                        vk::PFN_vkVoidFunction,
2810
72
                    >(Self::cmd_insert_debug_utils_label_ext)
2811
72
                },
2812
72
            },
2813
72
            VulkanCommand {
2814
72
                name: "vkCmdNextSubpass",
2815
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2816
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdNextSubpass),
2817
72
                proc: unsafe {
2818
72
                    std::mem::transmute::<vk::PFN_vkCmdNextSubpass, vk::PFN_vkVoidFunction>(
2819
72
                        Self::cmd_next_subpass,
2820
72
                    )
2821
72
                },
2822
72
            },
2823
72
            VulkanCommand {
2824
72
                name: "vkCmdNextSubpass2",
2825
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
2826
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdNextSubpass2),
2827
72
                proc: unsafe {
2828
72
                    std::mem::transmute::<vk::PFN_vkCmdNextSubpass2, vk::PFN_vkVoidFunction>(
2829
72
                        Self::cmd_next_subpass2,
2830
72
                    )
2831
72
                },
2832
72
            },
2833
72
            VulkanCommand {
2834
72
                name: "vkCmdNextSubpass2KHR",
2835
72
                features: smallvec![
Feature::Extension(Extension::KHRCreateRenderpass2)0
],
2836
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdNextSubpass2),
2837
72
                proc: unsafe {
2838
72
                    std::mem::transmute::<vk::PFN_vkCmdNextSubpass2, vk::PFN_vkVoidFunction>(
2839
72
                        Self::cmd_next_subpass2,
2840
72
                    )
2841
72
                },
2842
72
            },
2843
72
            VulkanCommand {
2844
72
                name: "vkCmdOpticalFlowExecuteNV",
2845
72
                features: smallvec![
Feature::Extension(Extension::NVOpticalFlow)0
],
2846
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdOpticalFlowExecuteNv),
2847
72
                proc: unsafe {
2848
72
                    std::mem::transmute::<vk::PFN_vkCmdOpticalFlowExecuteNV, vk::PFN_vkVoidFunction>(
2849
72
                        Self::cmd_optical_flow_execute_nv,
2850
72
                    )
2851
72
                },
2852
72
            },
2853
72
            VulkanCommand {
2854
72
                name: "vkCmdPipelineBarrier",
2855
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2856
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdPipelineBarrier),
2857
72
                proc: unsafe {
2858
72
                    std::mem::transmute::<vk::PFN_vkCmdPipelineBarrier, vk::PFN_vkVoidFunction>(
2859
72
                        Self::cmd_pipeline_barrier,
2860
72
                    )
2861
72
                },
2862
72
            },
2863
72
            VulkanCommand {
2864
72
                name: "vkCmdPipelineBarrier2",
2865
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2866
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdPipelineBarrier2),
2867
72
                proc: unsafe {
2868
72
                    std::mem::transmute::<vk::PFN_vkCmdPipelineBarrier2, vk::PFN_vkVoidFunction>(
2869
72
                        Self::cmd_pipeline_barrier2,
2870
72
                    )
2871
72
                },
2872
72
            },
2873
72
            VulkanCommand {
2874
72
                name: "vkCmdPipelineBarrier2KHR",
2875
72
                features: smallvec![
Feature::Extension(Extension::KHRSynchronization2)0
],
2876
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdPipelineBarrier2),
2877
72
                proc: unsafe {
2878
72
                    std::mem::transmute::<vk::PFN_vkCmdPipelineBarrier2, vk::PFN_vkVoidFunction>(
2879
72
                        Self::cmd_pipeline_barrier2,
2880
72
                    )
2881
72
                },
2882
72
            },
2883
72
            VulkanCommand {
2884
72
                name: "vkCmdPreprocessGeneratedCommandsNV",
2885
72
                features: smallvec![
Feature::Extension(Extension::NVDeviceGeneratedCommands)0
],
2886
72
                hooked: hooked_commands
2887
72
                    .contains(&LayerVulkanCommand::CmdPreprocessGeneratedCommandsNv),
2888
72
                proc: unsafe {
2889
72
                    std::mem::transmute::<
2890
72
                        vk::PFN_vkCmdPreprocessGeneratedCommandsNV,
2891
72
                        vk::PFN_vkVoidFunction,
2892
72
                    >(Self::cmd_preprocess_generated_commands_nv)
2893
72
                },
2894
72
            },
2895
72
            VulkanCommand {
2896
72
                name: "vkCmdPushConstants",
2897
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2898
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdPushConstants),
2899
72
                proc: unsafe {
2900
72
                    std::mem::transmute::<vk::PFN_vkCmdPushConstants, vk::PFN_vkVoidFunction>(
2901
72
                        Self::cmd_push_constants,
2902
72
                    )
2903
72
                },
2904
72
            },
2905
72
            VulkanCommand {
2906
72
                name: "vkCmdPushDescriptorSetKHR",
2907
72
                features: smallvec![
Feature::Extension(Extension::KHRPushDescriptor)0
],
2908
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdPushDescriptorSetKhr),
2909
72
                proc: unsafe {
2910
72
                    std::mem::transmute::<vk::PFN_vkCmdPushDescriptorSetKHR, vk::PFN_vkVoidFunction>(
2911
72
                        Self::cmd_push_descriptor_set_khr,
2912
72
                    )
2913
72
                },
2914
72
            },
2915
72
            VulkanCommand {
2916
72
                name: "vkCmdPushDescriptorSetWithTemplateKHR",
2917
72
                features: smallvec![
2918
0
                    Feature::Extension(Extension::KHRPushDescriptor),
2919
0
                    Feature::Extension(Extension::KHRDescriptorUpdateTemplate)
2920
                ],
2921
72
                hooked: hooked_commands
2922
72
                    .contains(&LayerVulkanCommand::CmdPushDescriptorSetWithTemplateKhr),
2923
72
                proc: unsafe {
2924
72
                    std::mem::transmute::<
2925
72
                        vk::PFN_vkCmdPushDescriptorSetWithTemplateKHR,
2926
72
                        vk::PFN_vkVoidFunction,
2927
72
                    >(Self::cmd_push_descriptor_set_with_template_khr)
2928
72
                },
2929
72
            },
2930
72
            VulkanCommand {
2931
72
                name: "vkCmdResetEvent",
2932
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2933
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdResetEvent),
2934
72
                proc: unsafe {
2935
72
                    std::mem::transmute::<vk::PFN_vkCmdResetEvent, vk::PFN_vkVoidFunction>(
2936
72
                        Self::cmd_reset_event,
2937
72
                    )
2938
72
                },
2939
72
            },
2940
72
            VulkanCommand {
2941
72
                name: "vkCmdResetEvent2",
2942
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2943
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdResetEvent2),
2944
72
                proc: unsafe {
2945
72
                    std::mem::transmute::<vk::PFN_vkCmdResetEvent2, vk::PFN_vkVoidFunction>(
2946
72
                        Self::cmd_reset_event2,
2947
72
                    )
2948
72
                },
2949
72
            },
2950
72
            VulkanCommand {
2951
72
                name: "vkCmdResetEvent2KHR",
2952
72
                features: smallvec![
Feature::Extension(Extension::KHRSynchronization2)0
],
2953
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdResetEvent2),
2954
72
                proc: unsafe {
2955
72
                    std::mem::transmute::<vk::PFN_vkCmdResetEvent2, vk::PFN_vkVoidFunction>(
2956
72
                        Self::cmd_reset_event2,
2957
72
                    )
2958
72
                },
2959
72
            },
2960
72
            VulkanCommand {
2961
72
                name: "vkCmdResetQueryPool",
2962
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2963
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdResetQueryPool),
2964
72
                proc: unsafe {
2965
72
                    std::mem::transmute::<vk::PFN_vkCmdResetQueryPool, vk::PFN_vkVoidFunction>(
2966
72
                        Self::cmd_reset_query_pool,
2967
72
                    )
2968
72
                },
2969
72
            },
2970
72
            VulkanCommand {
2971
72
                name: "vkCmdResolveImage",
2972
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2973
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdResolveImage),
2974
72
                proc: unsafe {
2975
72
                    std::mem::transmute::<vk::PFN_vkCmdResolveImage, vk::PFN_vkVoidFunction>(
2976
72
                        Self::cmd_resolve_image,
2977
72
                    )
2978
72
                },
2979
72
            },
2980
72
            VulkanCommand {
2981
72
                name: "vkCmdResolveImage2",
2982
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2983
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdResolveImage2),
2984
72
                proc: unsafe {
2985
72
                    std::mem::transmute::<vk::PFN_vkCmdResolveImage2, vk::PFN_vkVoidFunction>(
2986
72
                        Self::cmd_resolve_image2,
2987
72
                    )
2988
72
                },
2989
72
            },
2990
72
            VulkanCommand {
2991
72
                name: "vkCmdResolveImage2KHR",
2992
72
                features: smallvec![
Feature::Extension(Extension::KHRCopyCommands2)0
],
2993
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdResolveImage2),
2994
72
                proc: unsafe {
2995
72
                    std::mem::transmute::<vk::PFN_vkCmdResolveImage2, vk::PFN_vkVoidFunction>(
2996
72
                        Self::cmd_resolve_image2,
2997
72
                    )
2998
72
                },
2999
72
            },
3000
72
            VulkanCommand {
3001
72
                name: "vkCmdSetAlphaToCoverageEnableEXT",
3002
72
                features: smallvec![
3003
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3004
0
                    Feature::Extension(Extension::EXTShaderObject)
3005
                ],
3006
72
                hooked: hooked_commands
3007
72
                    .contains(&LayerVulkanCommand::CmdSetAlphaToCoverageEnableExt),
3008
72
                proc: unsafe {
3009
72
                    std::mem::transmute::<
3010
72
                        vk::PFN_vkCmdSetAlphaToCoverageEnableEXT,
3011
72
                        vk::PFN_vkVoidFunction,
3012
72
                    >(Self::cmd_set_alpha_to_coverage_enable_ext)
3013
72
                },
3014
72
            },
3015
72
            VulkanCommand {
3016
72
                name: "vkCmdSetAlphaToOneEnableEXT",
3017
72
                features: smallvec![
3018
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3019
0
                    Feature::Extension(Extension::EXTShaderObject)
3020
                ],
3021
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetAlphaToOneEnableExt),
3022
72
                proc: unsafe {
3023
72
                    std::mem::transmute::<vk::PFN_vkCmdSetAlphaToOneEnableEXT, vk::PFN_vkVoidFunction>(
3024
72
                        Self::cmd_set_alpha_to_one_enable_ext,
3025
72
                    )
3026
72
                },
3027
72
            },
3028
72
            VulkanCommand {
3029
72
                name: "vkCmdSetBlendConstants",
3030
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
3031
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetBlendConstants),
3032
72
                proc: unsafe {
3033
72
                    std::mem::transmute::<vk::PFN_vkCmdSetBlendConstants, vk::PFN_vkVoidFunction>(
3034
72
                        Self::cmd_set_blend_constants,
3035
72
                    )
3036
72
                },
3037
72
            },
3038
72
            VulkanCommand {
3039
72
                name: "vkCmdSetCheckpointNV",
3040
72
                features: smallvec![
Feature::Extension(Extension::NVDeviceDiagnosticCheckpoints)0
],
3041
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetCheckpointNv),
3042
72
                proc: unsafe {
3043
72
                    std::mem::transmute::<vk::PFN_vkCmdSetCheckpointNV, vk::PFN_vkVoidFunction>(
3044
72
                        Self::cmd_set_checkpoint_nv,
3045
72
                    )
3046
72
                },
3047
72
            },
3048
72
            VulkanCommand {
3049
72
                name: "vkCmdSetCoarseSampleOrderNV",
3050
72
                features: smallvec![
Feature::Extension(Extension::NVShadingRateImage)0
],
3051
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetCoarseSampleOrderNv),
3052
72
                proc: unsafe {
3053
72
                    std::mem::transmute::<vk::PFN_vkCmdSetCoarseSampleOrderNV, vk::PFN_vkVoidFunction>(
3054
72
                        Self::cmd_set_coarse_sample_order_nv,
3055
72
                    )
3056
72
                },
3057
72
            },
3058
72
            VulkanCommand {
3059
72
                name: "vkCmdSetColorBlendAdvancedEXT",
3060
72
                features: smallvec![
3061
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3062
0
                    Feature::Extension(Extension::EXTShaderObject)
3063
                ],
3064
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetColorBlendAdvancedExt),
3065
72
                proc: unsafe {
3066
72
                    std::mem::transmute::<
3067
72
                        vk::PFN_vkCmdSetColorBlendAdvancedEXT,
3068
72
                        vk::PFN_vkVoidFunction,
3069
72
                    >(Self::cmd_set_color_blend_advanced_ext)
3070
72
                },
3071
72
            },
3072
72
            VulkanCommand {
3073
72
                name: "vkCmdSetColorBlendEnableEXT",
3074
72
                features: smallvec![
3075
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3076
0
                    Feature::Extension(Extension::EXTShaderObject)
3077
                ],
3078
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetColorBlendEnableExt),
3079
72
                proc: unsafe {
3080
72
                    std::mem::transmute::<vk::PFN_vkCmdSetColorBlendEnableEXT, vk::PFN_vkVoidFunction>(
3081
72
                        Self::cmd_set_color_blend_enable_ext,
3082
72
                    )
3083
72
                },
3084
72
            },
3085
72
            VulkanCommand {
3086
72
                name: "vkCmdSetColorBlendEquationEXT",
3087
72
                features: smallvec![
3088
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3089
0
                    Feature::Extension(Extension::EXTShaderObject)
3090
                ],
3091
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetColorBlendEquationExt),
3092
72
                proc: unsafe {
3093
72
                    std::mem::transmute::<
3094
72
                        vk::PFN_vkCmdSetColorBlendEquationEXT,
3095
72
                        vk::PFN_vkVoidFunction,
3096
72
                    >(Self::cmd_set_color_blend_equation_ext)
3097
72
                },
3098
72
            },
3099
72
            VulkanCommand {
3100
72
                name: "vkCmdSetColorWriteEnableEXT",
3101
72
                features: smallvec![
Feature::Extension(Extension::EXTColorWriteEnable)0
],
3102
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetColorWriteEnableExt),
3103
72
                proc: unsafe {
3104
72
                    std::mem::transmute::<vk::PFN_vkCmdSetColorWriteEnableEXT, vk::PFN_vkVoidFunction>(
3105
72
                        Self::cmd_set_color_write_enable_ext,
3106
72
                    )
3107
72
                },
3108
72
            },
3109
72
            VulkanCommand {
3110
72
                name: "vkCmdSetColorWriteMaskEXT",
3111
72
                features: smallvec![
3112
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3113
0
                    Feature::Extension(Extension::EXTShaderObject)
3114
                ],
3115
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetColorWriteMaskExt),
3116
72
                proc: unsafe {
3117
72
                    std::mem::transmute::<vk::PFN_vkCmdSetColorWriteMaskEXT, vk::PFN_vkVoidFunction>(
3118
72
                        Self::cmd_set_color_write_mask_ext,
3119
72
                    )
3120
72
                },
3121
72
            },
3122
72
            VulkanCommand {
3123
72
                name: "vkCmdSetConservativeRasterizationModeEXT",
3124
72
                features: smallvec![
3125
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3126
0
                    Feature::Extension(Extension::EXTShaderObject)
3127
                ],
3128
72
                hooked: hooked_commands
3129
72
                    .contains(&LayerVulkanCommand::CmdSetConservativeRasterizationModeExt),
3130
72
                proc: unsafe {
3131
72
                    std::mem::transmute::<
3132
72
                        vk::PFN_vkCmdSetConservativeRasterizationModeEXT,
3133
72
                        vk::PFN_vkVoidFunction,
3134
72
                    >(Self::cmd_set_conservative_rasterization_mode_ext)
3135
72
                },
3136
72
            },
3137
72
            VulkanCommand {
3138
72
                name: "vkCmdSetCoverageModulationModeNV",
3139
72
                features: smallvec![
3140
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3141
0
                    Feature::Extension(Extension::EXTShaderObject)
3142
                ],
3143
72
                hooked: hooked_commands
3144
72
                    .contains(&LayerVulkanCommand::CmdSetCoverageModulationModeNv),
3145
72
                proc: unsafe {
3146
72
                    std::mem::transmute::<
3147
72
                        vk::PFN_vkCmdSetCoverageModulationModeNV,
3148
72
                        vk::PFN_vkVoidFunction,
3149
72
                    >(Self::cmd_set_coverage_modulation_mode_nv)
3150
72
                },
3151
72
            },
3152
72
            VulkanCommand {
3153
72
                name: "vkCmdSetCoverageModulationTableEnableNV",
3154
72
                features: smallvec![
3155
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3156
0
                    Feature::Extension(Extension::EXTShaderObject)
3157
                ],
3158
72
                hooked: hooked_commands
3159
72
                    .contains(&LayerVulkanCommand::CmdSetCoverageModulationTableEnableNv),
3160
72
                proc: unsafe {
3161
72
                    std::mem::transmute::<
3162
72
                        vk::PFN_vkCmdSetCoverageModulationTableEnableNV,
3163
72
                        vk::PFN_vkVoidFunction,
3164
72
                    >(Self::cmd_set_coverage_modulation_table_enable_nv)
3165
72
                },
3166
72
            },
3167
72
            VulkanCommand {
3168
72
                name: "vkCmdSetCoverageModulationTableNV",
3169
72
                features: smallvec![
3170
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3171
0
                    Feature::Extension(Extension::EXTShaderObject)
3172
                ],
3173
72
                hooked: hooked_commands
3174
72
                    .contains(&LayerVulkanCommand::CmdSetCoverageModulationTableNv),
3175
72
                proc: unsafe {
3176
72
                    std::mem::transmute::<
3177
72
                        vk::PFN_vkCmdSetCoverageModulationTableNV,
3178
72
                        vk::PFN_vkVoidFunction,
3179
72
                    >(Self::cmd_set_coverage_modulation_table_nv)
3180
72
                },
3181
72
            },
3182
72
            VulkanCommand {
3183
72
                name: "vkCmdSetCoverageReductionModeNV",
3184
72
                features: smallvec![
3185
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3186
0
                    Feature::Extension(Extension::EXTShaderObject)
3187
                ],
3188
72
                hooked: hooked_commands
3189
72
                    .contains(&LayerVulkanCommand::CmdSetCoverageReductionModeNv),
3190
72
                proc: unsafe {
3191
72
                    std::mem::transmute::<
3192
72
                        vk::PFN_vkCmdSetCoverageReductionModeNV,
3193
72
                        vk::PFN_vkVoidFunction,
3194
72
                    >(Self::cmd_set_coverage_reduction_mode_nv)
3195
72
                },
3196
72
            },
3197
72
            VulkanCommand {
3198
72
                name: "vkCmdSetCoverageToColorEnableNV",
3199
72
                features: smallvec![
3200
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3201
0
                    Feature::Extension(Extension::EXTShaderObject)
3202
                ],
3203
72
                hooked: hooked_commands
3204
72
                    .contains(&LayerVulkanCommand::CmdSetCoverageToColorEnableNv),
3205
72
                proc: unsafe {
3206
72
                    std::mem::transmute::<
3207
72
                        vk::PFN_vkCmdSetCoverageToColorEnableNV,
3208
72
                        vk::PFN_vkVoidFunction,
3209
72
                    >(Self::cmd_set_coverage_to_color_enable_nv)
3210
72
                },
3211
72
            },
3212
72
            VulkanCommand {
3213
72
                name: "vkCmdSetCoverageToColorLocationNV",
3214
72
                features: smallvec![
3215
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3216
0
                    Feature::Extension(Extension::EXTShaderObject)
3217
                ],
3218
72
                hooked: hooked_commands
3219
72
                    .contains(&LayerVulkanCommand::CmdSetCoverageToColorLocationNv),
3220
72
                proc: unsafe {
3221
72
                    std::mem::transmute::<
3222
72
                        vk::PFN_vkCmdSetCoverageToColorLocationNV,
3223
72
                        vk::PFN_vkVoidFunction,
3224
72
                    >(Self::cmd_set_coverage_to_color_location_nv)
3225
72
                },
3226
72
            },
3227
72
            VulkanCommand {
3228
72
                name: "vkCmdSetCullMode",
3229
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3230
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetCullMode),
3231
72
                proc: unsafe {
3232
72
                    std::mem::transmute::<vk::PFN_vkCmdSetCullMode, vk::PFN_vkVoidFunction>(
3233
72
                        Self::cmd_set_cull_mode,
3234
72
                    )
3235
72
                },
3236
72
            },
3237
72
            VulkanCommand {
3238
72
                name: "vkCmdSetCullModeEXT",
3239
72
                features: smallvec![
3240
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3241
0
                    Feature::Extension(Extension::EXTShaderObject)
3242
                ],
3243
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetCullMode),
3244
72
                proc: unsafe {
3245
72
                    std::mem::transmute::<vk::PFN_vkCmdSetCullMode, vk::PFN_vkVoidFunction>(
3246
72
                        Self::cmd_set_cull_mode,
3247
72
                    )
3248
72
                },
3249
72
            },
3250
72
            VulkanCommand {
3251
72
                name: "vkCmdSetDepthBias",
3252
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
3253
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthBias),
3254
72
                proc: unsafe {
3255
72
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthBias, vk::PFN_vkVoidFunction>(
3256
72
                        Self::cmd_set_depth_bias,
3257
72
                    )
3258
72
                },
3259
72
            },
3260
72
            VulkanCommand {
3261
72
                name: "vkCmdSetDepthBiasEnable",
3262
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3263
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthBiasEnable),
3264
72
                proc: unsafe {
3265
72
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthBiasEnable, vk::PFN_vkVoidFunction>(
3266
72
                        Self::cmd_set_depth_bias_enable,
3267
72
                    )
3268
72
                },
3269
72
            },
3270
72
            VulkanCommand {
3271
72
                name: "vkCmdSetDepthBiasEnableEXT",
3272
72
                features: smallvec![
3273
0
                    Feature::Extension(Extension::EXTExtendedDynamicState2),
3274
0
                    Feature::Extension(Extension::EXTShaderObject)
3275
                ],
3276
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthBiasEnable),
3277
72
                proc: unsafe {
3278
72
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthBiasEnable, vk::PFN_vkVoidFunction>(
3279
72
                        Self::cmd_set_depth_bias_enable,
3280
72
                    )
3281
72
                },
3282
72
            },
3283
72
            VulkanCommand {
3284
72
                name: "vkCmdSetDepthBounds",
3285
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
3286
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthBounds),
3287
72
                proc: unsafe {
3288
72
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthBounds, vk::PFN_vkVoidFunction>(
3289
72
                        Self::cmd_set_depth_bounds,
3290
72
                    )
3291
72
                },
3292
72
            },
3293
72
            VulkanCommand {
3294
72
                name: "vkCmdSetDepthBoundsTestEnable",
3295
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3296
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthBoundsTestEnable),
3297
72
                proc: unsafe {
3298
72
                    std::mem::transmute::<
3299
72
                        vk::PFN_vkCmdSetDepthBoundsTestEnable,
3300
72
                        vk::PFN_vkVoidFunction,
3301
72
                    >(Self::cmd_set_depth_bounds_test_enable)
3302
72
                },
3303
72
            },
3304
72
            VulkanCommand {
3305
72
                name: "vkCmdSetDepthBoundsTestEnableEXT",
3306
72
                features: smallvec![
3307
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3308
0
                    Feature::Extension(Extension::EXTShaderObject)
3309
                ],
3310
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthBoundsTestEnable),
3311
72
                proc: unsafe {
3312
72
                    std::mem::transmute::<
3313
72
                        vk::PFN_vkCmdSetDepthBoundsTestEnable,
3314
72
                        vk::PFN_vkVoidFunction,
3315
72
                    >(Self::cmd_set_depth_bounds_test_enable)
3316
72
                },
3317
72
            },
3318
72
            VulkanCommand {
3319
72
                name: "vkCmdSetDepthClampEnableEXT",
3320
72
                features: smallvec![
3321
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3322
0
                    Feature::Extension(Extension::EXTShaderObject)
3323
                ],
3324
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthClampEnableExt),
3325
72
                proc: unsafe {
3326
72
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthClampEnableEXT, vk::PFN_vkVoidFunction>(
3327
72
                        Self::cmd_set_depth_clamp_enable_ext,
3328
72
                    )
3329
72
                },
3330
72
            },
3331
72
            VulkanCommand {
3332
72
                name: "vkCmdSetDepthClipEnableEXT",
3333
72
                features: smallvec![
3334
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3335
0
                    Feature::Extension(Extension::EXTShaderObject)
3336
                ],
3337
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthClipEnableExt),
3338
72
                proc: unsafe {
3339
72
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthClipEnableEXT, vk::PFN_vkVoidFunction>(
3340
72
                        Self::cmd_set_depth_clip_enable_ext,
3341
72
                    )
3342
72
                },
3343
72
            },
3344
72
            VulkanCommand {
3345
72
                name: "vkCmdSetDepthClipNegativeOneToOneEXT",
3346
72
                features: smallvec![
3347
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3348
0
                    Feature::Extension(Extension::EXTShaderObject)
3349
                ],
3350
72
                hooked: hooked_commands
3351
72
                    .contains(&LayerVulkanCommand::CmdSetDepthClipNegativeOneToOneExt),
3352
72
                proc: unsafe {
3353
72
                    std::mem::transmute::<
3354
72
                        vk::PFN_vkCmdSetDepthClipNegativeOneToOneEXT,
3355
72
                        vk::PFN_vkVoidFunction,
3356
72
                    >(Self::cmd_set_depth_clip_negative_one_to_one_ext)
3357
72
                },
3358
72
            },
3359
72
            VulkanCommand {
3360
72
                name: "vkCmdSetDepthCompareOp",
3361
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3362
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthCompareOp),
3363
72
                proc: unsafe {
3364
72
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthCompareOp, vk::PFN_vkVoidFunction>(
3365
72
                        Self::cmd_set_depth_compare_op,
3366
72
                    )
3367
72
                },
3368
72
            },
3369
72
            VulkanCommand {
3370
72
                name: "vkCmdSetDepthCompareOpEXT",
3371
72
                features: smallvec![
3372
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3373
0
                    Feature::Extension(Extension::EXTShaderObject)
3374
                ],
3375
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthCompareOp),
3376
72
                proc: unsafe {
3377
72
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthCompareOp, vk::PFN_vkVoidFunction>(
3378
72
                        Self::cmd_set_depth_compare_op,
3379
72
                    )
3380
72
                },
3381
72
            },
3382
72
            VulkanCommand {
3383
72
                name: "vkCmdSetDepthTestEnable",
3384
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3385
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthTestEnable),
3386
72
                proc: unsafe {
3387
72
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthTestEnable, vk::PFN_vkVoidFunction>(
3388
72
                        Self::cmd_set_depth_test_enable,
3389
72
                    )
3390
72
                },
3391
72
            },
3392
72
            VulkanCommand {
3393
72
                name: "vkCmdSetDepthTestEnableEXT",
3394
72
                features: smallvec![
3395
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3396
0
                    Feature::Extension(Extension::EXTShaderObject)
3397
                ],
3398
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthTestEnable),
3399
72
                proc: unsafe {
3400
72
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthTestEnable, vk::PFN_vkVoidFunction>(
3401
72
                        Self::cmd_set_depth_test_enable,
3402
72
                    )
3403
72
                },
3404
72
            },
3405
72
            VulkanCommand {
3406
72
                name: "vkCmdSetDepthWriteEnable",
3407
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3408
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthWriteEnable),
3409
72
                proc: unsafe {
3410
72
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthWriteEnable, vk::PFN_vkVoidFunction>(
3411
72
                        Self::cmd_set_depth_write_enable,
3412
72
                    )
3413
72
                },
3414
72
            },
3415
72
            VulkanCommand {
3416
72
                name: "vkCmdSetDepthWriteEnableEXT",
3417
72
                features: smallvec![
3418
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3419
0
                    Feature::Extension(Extension::EXTShaderObject)
3420
                ],
3421
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthWriteEnable),
3422
72
                proc: unsafe {
3423
72
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthWriteEnable, vk::PFN_vkVoidFunction>(
3424
72
                        Self::cmd_set_depth_write_enable,
3425
72
                    )
3426
72
                },
3427
72
            },
3428
72
            VulkanCommand {
3429
72
                name: "vkCmdSetDescriptorBufferOffsetsEXT",
3430
72
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
3431
72
                hooked: hooked_commands
3432
72
                    .contains(&LayerVulkanCommand::CmdSetDescriptorBufferOffsetsExt),
3433
72
                proc: unsafe {
3434
72
                    std::mem::transmute::<
3435
72
                        vk::PFN_vkCmdSetDescriptorBufferOffsetsEXT,
3436
72
                        vk::PFN_vkVoidFunction,
3437
72
                    >(Self::cmd_set_descriptor_buffer_offsets_ext)
3438
72
                },
3439
72
            },
3440
72
            VulkanCommand {
3441
72
                name: "vkCmdSetDeviceMask",
3442
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
3443
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDeviceMask),
3444
72
                proc: unsafe {
3445
72
                    std::mem::transmute::<vk::PFN_vkCmdSetDeviceMask, vk::PFN_vkVoidFunction>(
3446
72
                        Self::cmd_set_device_mask,
3447
72
                    )
3448
72
                },
3449
72
            },
3450
72
            VulkanCommand {
3451
72
                name: "vkCmdSetDeviceMaskKHR",
3452
72
                features: smallvec![
Feature::Extension(Extension::KHRDeviceGroup)0
],
3453
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDeviceMask),
3454
72
                proc: unsafe {
3455
72
                    std::mem::transmute::<vk::PFN_vkCmdSetDeviceMask, vk::PFN_vkVoidFunction>(
3456
72
                        Self::cmd_set_device_mask,
3457
72
                    )
3458
72
                },
3459
72
            },
3460
72
            VulkanCommand {
3461
72
                name: "vkCmdSetDiscardRectangleEXT",
3462
72
                features: smallvec![
Feature::Extension(Extension::EXTDiscardRectangles)0
],
3463
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDiscardRectangleExt),
3464
72
                proc: unsafe {
3465
72
                    std::mem::transmute::<vk::PFN_vkCmdSetDiscardRectangleEXT, vk::PFN_vkVoidFunction>(
3466
72
                        Self::cmd_set_discard_rectangle_ext,
3467
72
                    )
3468
72
                },
3469
72
            },
3470
72
            VulkanCommand {
3471
72
                name: "vkCmdSetEvent",
3472
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
3473
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetEvent),
3474
72
                proc: unsafe {
3475
72
                    std::mem::transmute::<vk::PFN_vkCmdSetEvent, vk::PFN_vkVoidFunction>(
3476
72
                        Self::cmd_set_event,
3477
72
                    )
3478
72
                },
3479
72
            },
3480
72
            VulkanCommand {
3481
72
                name: "vkCmdSetEvent2",
3482
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3483
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetEvent2),
3484
72
                proc: unsafe {
3485
72
                    std::mem::transmute::<vk::PFN_vkCmdSetEvent2, vk::PFN_vkVoidFunction>(
3486
72
                        Self::cmd_set_event2,
3487
72
                    )
3488
72
                },
3489
72
            },
3490
72
            VulkanCommand {
3491
72
                name: "vkCmdSetEvent2KHR",
3492
72
                features: smallvec![
Feature::Extension(Extension::KHRSynchronization2)0
],
3493
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetEvent2),
3494
72
                proc: unsafe {
3495
72
                    std::mem::transmute::<vk::PFN_vkCmdSetEvent2, vk::PFN_vkVoidFunction>(
3496
72
                        Self::cmd_set_event2,
3497
72
                    )
3498
72
                },
3499
72
            },
3500
72
            VulkanCommand {
3501
72
                name: "vkCmdSetExclusiveScissorNV",
3502
72
                features: smallvec![
Feature::Extension(Extension::NVScissorExclusive)0
],
3503
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetExclusiveScissorNv),
3504
72
                proc: unsafe {
3505
72
                    std::mem::transmute::<vk::PFN_vkCmdSetExclusiveScissorNV, vk::PFN_vkVoidFunction>(
3506
72
                        Self::cmd_set_exclusive_scissor_nv,
3507
72
                    )
3508
72
                },
3509
72
            },
3510
72
            VulkanCommand {
3511
72
                name: "vkCmdSetExtraPrimitiveOverestimationSizeEXT",
3512
72
                features: smallvec![
3513
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3514
0
                    Feature::Extension(Extension::EXTShaderObject)
3515
                ],
3516
72
                hooked: hooked_commands
3517
72
                    .contains(&LayerVulkanCommand::CmdSetExtraPrimitiveOverestimationSizeExt),
3518
72
                proc: unsafe {
3519
72
                    std::mem::transmute::<
3520
72
                        vk::PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT,
3521
72
                        vk::PFN_vkVoidFunction,
3522
72
                    >(Self::cmd_set_extra_primitive_overestimation_size_ext)
3523
72
                },
3524
72
            },
3525
72
            VulkanCommand {
3526
72
                name: "vkCmdSetFragmentShadingRateEnumNV",
3527
72
                features: smallvec![
Feature::Extension(Extension::NVFragmentShadingRateEnums)0
],
3528
72
                hooked: hooked_commands
3529
72
                    .contains(&LayerVulkanCommand::CmdSetFragmentShadingRateEnumNv),
3530
72
                proc: unsafe {
3531
72
                    std::mem::transmute::<
3532
72
                        vk::PFN_vkCmdSetFragmentShadingRateEnumNV,
3533
72
                        vk::PFN_vkVoidFunction,
3534
72
                    >(Self::cmd_set_fragment_shading_rate_enum_nv)
3535
72
                },
3536
72
            },
3537
72
            VulkanCommand {
3538
72
                name: "vkCmdSetFragmentShadingRateKHR",
3539
72
                features: smallvec![
Feature::Extension(Extension::KHRFragmentShadingRate)0
],
3540
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetFragmentShadingRateKhr),
3541
72
                proc: unsafe {
3542
72
                    std::mem::transmute::<
3543
72
                        vk::PFN_vkCmdSetFragmentShadingRateKHR,
3544
72
                        vk::PFN_vkVoidFunction,
3545
72
                    >(Self::cmd_set_fragment_shading_rate_khr)
3546
72
                },
3547
72
            },
3548
72
            VulkanCommand {
3549
72
                name: "vkCmdSetFrontFace",
3550
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3551
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetFrontFace),
3552
72
                proc: unsafe {
3553
72
                    std::mem::transmute::<vk::PFN_vkCmdSetFrontFace, vk::PFN_vkVoidFunction>(
3554
72
                        Self::cmd_set_front_face,
3555
72
                    )
3556
72
                },
3557
72
            },
3558
72
            VulkanCommand {
3559
72
                name: "vkCmdSetFrontFaceEXT",
3560
72
                features: smallvec![
3561
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3562
0
                    Feature::Extension(Extension::EXTShaderObject)
3563
                ],
3564
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetFrontFace),
3565
72
                proc: unsafe {
3566
72
                    std::mem::transmute::<vk::PFN_vkCmdSetFrontFace, vk::PFN_vkVoidFunction>(
3567
72
                        Self::cmd_set_front_face,
3568
72
                    )
3569
72
                },
3570
72
            },
3571
72
            VulkanCommand {
3572
72
                name: "vkCmdSetLineRasterizationModeEXT",
3573
72
                features: smallvec![
3574
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3575
0
                    Feature::Extension(Extension::EXTShaderObject)
3576
                ],
3577
72
                hooked: hooked_commands
3578
72
                    .contains(&LayerVulkanCommand::CmdSetLineRasterizationModeExt),
3579
72
                proc: unsafe {
3580
72
                    std::mem::transmute::<
3581
72
                        vk::PFN_vkCmdSetLineRasterizationModeEXT,
3582
72
                        vk::PFN_vkVoidFunction,
3583
72
                    >(Self::cmd_set_line_rasterization_mode_ext)
3584
72
                },
3585
72
            },
3586
72
            VulkanCommand {
3587
72
                name: "vkCmdSetLineStippleEXT",
3588
72
                features: smallvec![
Feature::Extension(Extension::EXTLineRasterization)0
],
3589
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetLineStippleExt),
3590
72
                proc: unsafe {
3591
72
                    std::mem::transmute::<vk::PFN_vkCmdSetLineStippleEXT, vk::PFN_vkVoidFunction>(
3592
72
                        Self::cmd_set_line_stipple_ext,
3593
72
                    )
3594
72
                },
3595
72
            },
3596
72
            VulkanCommand {
3597
72
                name: "vkCmdSetLineStippleEnableEXT",
3598
72
                features: smallvec![
3599
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3600
0
                    Feature::Extension(Extension::EXTShaderObject)
3601
                ],
3602
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetLineStippleEnableExt),
3603
72
                proc: unsafe {
3604
72
                    std::mem::transmute::<
3605
72
                        vk::PFN_vkCmdSetLineStippleEnableEXT,
3606
72
                        vk::PFN_vkVoidFunction,
3607
72
                    >(Self::cmd_set_line_stipple_enable_ext)
3608
72
                },
3609
72
            },
3610
72
            VulkanCommand {
3611
72
                name: "vkCmdSetLineWidth",
3612
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
3613
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetLineWidth),
3614
72
                proc: unsafe {
3615
72
                    std::mem::transmute::<vk::PFN_vkCmdSetLineWidth, vk::PFN_vkVoidFunction>(
3616
72
                        Self::cmd_set_line_width,
3617
72
                    )
3618
72
                },
3619
72
            },
3620
72
            VulkanCommand {
3621
72
                name: "vkCmdSetLogicOpEXT",
3622
72
                features: smallvec![
3623
0
                    Feature::Extension(Extension::EXTExtendedDynamicState2),
3624
0
                    Feature::Extension(Extension::EXTShaderObject)
3625
                ],
3626
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetLogicOpExt),
3627
72
                proc: unsafe {
3628
72
                    std::mem::transmute::<vk::PFN_vkCmdSetLogicOpEXT, vk::PFN_vkVoidFunction>(
3629
72
                        Self::cmd_set_logic_op_ext,
3630
72
                    )
3631
72
                },
3632
72
            },
3633
72
            VulkanCommand {
3634
72
                name: "vkCmdSetLogicOpEnableEXT",
3635
72
                features: smallvec![
3636
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3637
0
                    Feature::Extension(Extension::EXTShaderObject)
3638
                ],
3639
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetLogicOpEnableExt),
3640
72
                proc: unsafe {
3641
72
                    std::mem::transmute::<vk::PFN_vkCmdSetLogicOpEnableEXT, vk::PFN_vkVoidFunction>(
3642
72
                        Self::cmd_set_logic_op_enable_ext,
3643
72
                    )
3644
72
                },
3645
72
            },
3646
72
            VulkanCommand {
3647
72
                name: "vkCmdSetPatchControlPointsEXT",
3648
72
                features: smallvec![
3649
0
                    Feature::Extension(Extension::EXTExtendedDynamicState2),
3650
0
                    Feature::Extension(Extension::EXTShaderObject)
3651
                ],
3652
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetPatchControlPointsExt),
3653
72
                proc: unsafe {
3654
72
                    std::mem::transmute::<
3655
72
                        vk::PFN_vkCmdSetPatchControlPointsEXT,
3656
72
                        vk::PFN_vkVoidFunction,
3657
72
                    >(Self::cmd_set_patch_control_points_ext)
3658
72
                },
3659
72
            },
3660
72
            VulkanCommand {
3661
72
                name: "vkCmdSetPerformanceMarkerINTEL",
3662
72
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
3663
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetPerformanceMarkerIntel),
3664
72
                proc: unsafe {
3665
72
                    std::mem::transmute::<
3666
72
                        vk::PFN_vkCmdSetPerformanceMarkerINTEL,
3667
72
                        vk::PFN_vkVoidFunction,
3668
72
                    >(Self::cmd_set_performance_marker_intel)
3669
72
                },
3670
72
            },
3671
72
            VulkanCommand {
3672
72
                name: "vkCmdSetPerformanceOverrideINTEL",
3673
72
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
3674
72
                hooked: hooked_commands
3675
72
                    .contains(&LayerVulkanCommand::CmdSetPerformanceOverrideIntel),
3676
72
                proc: unsafe {
3677
72
                    std::mem::transmute::<
3678
72
                        vk::PFN_vkCmdSetPerformanceOverrideINTEL,
3679
72
                        vk::PFN_vkVoidFunction,
3680
72
                    >(Self::cmd_set_performance_override_intel)
3681
72
                },
3682
72
            },
3683
72
            VulkanCommand {
3684
72
                name: "vkCmdSetPerformanceStreamMarkerINTEL",
3685
72
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
3686
72
                hooked: hooked_commands
3687
72
                    .contains(&LayerVulkanCommand::CmdSetPerformanceStreamMarkerIntel),
3688
72
                proc: unsafe {
3689
72
                    std::mem::transmute::<
3690
72
                        vk::PFN_vkCmdSetPerformanceStreamMarkerINTEL,
3691
72
                        vk::PFN_vkVoidFunction,
3692
72
                    >(Self::cmd_set_performance_stream_marker_intel)
3693
72
                },
3694
72
            },
3695
72
            VulkanCommand {
3696
72
                name: "vkCmdSetPolygonModeEXT",
3697
72
                features: smallvec![
3698
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3699
0
                    Feature::Extension(Extension::EXTShaderObject)
3700
                ],
3701
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetPolygonModeExt),
3702
72
                proc: unsafe {
3703
72
                    std::mem::transmute::<vk::PFN_vkCmdSetPolygonModeEXT, vk::PFN_vkVoidFunction>(
3704
72
                        Self::cmd_set_polygon_mode_ext,
3705
72
                    )
3706
72
                },
3707
72
            },
3708
72
            VulkanCommand {
3709
72
                name: "vkCmdSetPrimitiveRestartEnable",
3710
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3711
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetPrimitiveRestartEnable),
3712
72
                proc: unsafe {
3713
72
                    std::mem::transmute::<
3714
72
                        vk::PFN_vkCmdSetPrimitiveRestartEnable,
3715
72
                        vk::PFN_vkVoidFunction,
3716
72
                    >(Self::cmd_set_primitive_restart_enable)
3717
72
                },
3718
72
            },
3719
72
            VulkanCommand {
3720
72
                name: "vkCmdSetPrimitiveRestartEnableEXT",
3721
72
                features: smallvec![
3722
0
                    Feature::Extension(Extension::EXTExtendedDynamicState2),
3723
0
                    Feature::Extension(Extension::EXTShaderObject)
3724
                ],
3725
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetPrimitiveRestartEnable),
3726
72
                proc: unsafe {
3727
72
                    std::mem::transmute::<
3728
72
                        vk::PFN_vkCmdSetPrimitiveRestartEnable,
3729
72
                        vk::PFN_vkVoidFunction,
3730
72
                    >(Self::cmd_set_primitive_restart_enable)
3731
72
                },
3732
72
            },
3733
72
            VulkanCommand {
3734
72
                name: "vkCmdSetPrimitiveTopology",
3735
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3736
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetPrimitiveTopology),
3737
72
                proc: unsafe {
3738
72
                    std::mem::transmute::<vk::PFN_vkCmdSetPrimitiveTopology, vk::PFN_vkVoidFunction>(
3739
72
                        Self::cmd_set_primitive_topology,
3740
72
                    )
3741
72
                },
3742
72
            },
3743
72
            VulkanCommand {
3744
72
                name: "vkCmdSetPrimitiveTopologyEXT",
3745
72
                features: smallvec![
3746
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3747
0
                    Feature::Extension(Extension::EXTShaderObject)
3748
                ],
3749
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetPrimitiveTopology),
3750
72
                proc: unsafe {
3751
72
                    std::mem::transmute::<vk::PFN_vkCmdSetPrimitiveTopology, vk::PFN_vkVoidFunction>(
3752
72
                        Self::cmd_set_primitive_topology,
3753
72
                    )
3754
72
                },
3755
72
            },
3756
72
            VulkanCommand {
3757
72
                name: "vkCmdSetProvokingVertexModeEXT",
3758
72
                features: smallvec![
3759
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3760
0
                    Feature::Extension(Extension::EXTShaderObject)
3761
                ],
3762
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetProvokingVertexModeExt),
3763
72
                proc: unsafe {
3764
72
                    std::mem::transmute::<
3765
72
                        vk::PFN_vkCmdSetProvokingVertexModeEXT,
3766
72
                        vk::PFN_vkVoidFunction,
3767
72
                    >(Self::cmd_set_provoking_vertex_mode_ext)
3768
72
                },
3769
72
            },
3770
72
            VulkanCommand {
3771
72
                name: "vkCmdSetRasterizationSamplesEXT",
3772
72
                features: smallvec![
3773
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3774
0
                    Feature::Extension(Extension::EXTShaderObject)
3775
                ],
3776
72
                hooked: hooked_commands
3777
72
                    .contains(&LayerVulkanCommand::CmdSetRasterizationSamplesExt),
3778
72
                proc: unsafe {
3779
72
                    std::mem::transmute::<
3780
72
                        vk::PFN_vkCmdSetRasterizationSamplesEXT,
3781
72
                        vk::PFN_vkVoidFunction,
3782
72
                    >(Self::cmd_set_rasterization_samples_ext)
3783
72
                },
3784
72
            },
3785
72
            VulkanCommand {
3786
72
                name: "vkCmdSetRasterizationStreamEXT",
3787
72
                features: smallvec![
3788
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3789
0
                    Feature::Extension(Extension::EXTShaderObject)
3790
                ],
3791
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetRasterizationStreamExt),
3792
72
                proc: unsafe {
3793
72
                    std::mem::transmute::<
3794
72
                        vk::PFN_vkCmdSetRasterizationStreamEXT,
3795
72
                        vk::PFN_vkVoidFunction,
3796
72
                    >(Self::cmd_set_rasterization_stream_ext)
3797
72
                },
3798
72
            },
3799
72
            VulkanCommand {
3800
72
                name: "vkCmdSetRasterizerDiscardEnable",
3801
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3802
72
                hooked: hooked_commands
3803
72
                    .contains(&LayerVulkanCommand::CmdSetRasterizerDiscardEnable),
3804
72
                proc: unsafe {
3805
72
                    std::mem::transmute::<
3806
72
                        vk::PFN_vkCmdSetRasterizerDiscardEnable,
3807
72
                        vk::PFN_vkVoidFunction,
3808
72
                    >(Self::cmd_set_rasterizer_discard_enable)
3809
72
                },
3810
72
            },
3811
72
            VulkanCommand {
3812
72
                name: "vkCmdSetRasterizerDiscardEnableEXT",
3813
72
                features: smallvec![
3814
0
                    Feature::Extension(Extension::EXTExtendedDynamicState2),
3815
0
                    Feature::Extension(Extension::EXTShaderObject)
3816
                ],
3817
72
                hooked: hooked_commands
3818
72
                    .contains(&LayerVulkanCommand::CmdSetRasterizerDiscardEnable),
3819
72
                proc: unsafe {
3820
72
                    std::mem::transmute::<
3821
72
                        vk::PFN_vkCmdSetRasterizerDiscardEnable,
3822
72
                        vk::PFN_vkVoidFunction,
3823
72
                    >(Self::cmd_set_rasterizer_discard_enable)
3824
72
                },
3825
72
            },
3826
72
            VulkanCommand {
3827
72
                name: "vkCmdSetRayTracingPipelineStackSizeKHR",
3828
72
                features: smallvec![
Feature::Extension(Extension::KHRRayTracingPipeline)0
],
3829
72
                hooked: hooked_commands
3830
72
                    .contains(&LayerVulkanCommand::CmdSetRayTracingPipelineStackSizeKhr),
3831
72
                proc: unsafe {
3832
72
                    std::mem::transmute::<
3833
72
                        vk::PFN_vkCmdSetRayTracingPipelineStackSizeKHR,
3834
72
                        vk::PFN_vkVoidFunction,
3835
72
                    >(Self::cmd_set_ray_tracing_pipeline_stack_size_khr)
3836
72
                },
3837
72
            },
3838
72
            VulkanCommand {
3839
72
                name: "vkCmdSetRepresentativeFragmentTestEnableNV",
3840
72
                features: smallvec![
3841
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3842
0
                    Feature::Extension(Extension::EXTShaderObject)
3843
                ],
3844
72
                hooked: hooked_commands
3845
72
                    .contains(&LayerVulkanCommand::CmdSetRepresentativeFragmentTestEnableNv),
3846
72
                proc: unsafe {
3847
72
                    std::mem::transmute::<
3848
72
                        vk::PFN_vkCmdSetRepresentativeFragmentTestEnableNV,
3849
72
                        vk::PFN_vkVoidFunction,
3850
72
                    >(Self::cmd_set_representative_fragment_test_enable_nv)
3851
72
                },
3852
72
            },
3853
72
            VulkanCommand {
3854
72
                name: "vkCmdSetSampleLocationsEXT",
3855
72
                features: smallvec![
Feature::Extension(Extension::EXTSampleLocations)0
],
3856
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetSampleLocationsExt),
3857
72
                proc: unsafe {
3858
72
                    std::mem::transmute::<vk::PFN_vkCmdSetSampleLocationsEXT, vk::PFN_vkVoidFunction>(
3859
72
                        Self::cmd_set_sample_locations_ext,
3860
72
                    )
3861
72
                },
3862
72
            },
3863
72
            VulkanCommand {
3864
72
                name: "vkCmdSetSampleLocationsEnableEXT",
3865
72
                features: smallvec![
3866
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3867
0
                    Feature::Extension(Extension::EXTShaderObject)
3868
                ],
3869
72
                hooked: hooked_commands
3870
72
                    .contains(&LayerVulkanCommand::CmdSetSampleLocationsEnableExt),
3871
72
                proc: unsafe {
3872
72
                    std::mem::transmute::<
3873
72
                        vk::PFN_vkCmdSetSampleLocationsEnableEXT,
3874
72
                        vk::PFN_vkVoidFunction,
3875
72
                    >(Self::cmd_set_sample_locations_enable_ext)
3876
72
                },
3877
72
            },
3878
72
            VulkanCommand {
3879
72
                name: "vkCmdSetSampleMaskEXT",
3880
72
                features: smallvec![
3881
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3882
0
                    Feature::Extension(Extension::EXTShaderObject)
3883
                ],
3884
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetSampleMaskExt),
3885
72
                proc: unsafe {
3886
72
                    std::mem::transmute::<vk::PFN_vkCmdSetSampleMaskEXT, vk::PFN_vkVoidFunction>(
3887
72
                        Self::cmd_set_sample_mask_ext,
3888
72
                    )
3889
72
                },
3890
72
            },
3891
72
            VulkanCommand {
3892
72
                name: "vkCmdSetScissor",
3893
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
3894
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetScissor),
3895
72
                proc: unsafe {
3896
72
                    std::mem::transmute::<vk::PFN_vkCmdSetScissor, vk::PFN_vkVoidFunction>(
3897
72
                        Self::cmd_set_scissor,
3898
72
                    )
3899
72
                },
3900
72
            },
3901
72
            VulkanCommand {
3902
72
                name: "vkCmdSetScissorWithCount",
3903
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3904
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetScissorWithCount),
3905
72
                proc: unsafe {
3906
72
                    std::mem::transmute::<vk::PFN_vkCmdSetScissorWithCount, vk::PFN_vkVoidFunction>(
3907
72
                        Self::cmd_set_scissor_with_count,
3908
72
                    )
3909
72
                },
3910
72
            },
3911
72
            VulkanCommand {
3912
72
                name: "vkCmdSetScissorWithCountEXT",
3913
72
                features: smallvec![
3914
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3915
0
                    Feature::Extension(Extension::EXTShaderObject)
3916
                ],
3917
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetScissorWithCount),
3918
72
                proc: unsafe {
3919
72
                    std::mem::transmute::<vk::PFN_vkCmdSetScissorWithCount, vk::PFN_vkVoidFunction>(
3920
72
                        Self::cmd_set_scissor_with_count,
3921
72
                    )
3922
72
                },
3923
72
            },
3924
72
            VulkanCommand {
3925
72
                name: "vkCmdSetShadingRateImageEnableNV",
3926
72
                features: smallvec![
3927
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3928
0
                    Feature::Extension(Extension::EXTShaderObject)
3929
                ],
3930
72
                hooked: hooked_commands
3931
72
                    .contains(&LayerVulkanCommand::CmdSetShadingRateImageEnableNv),
3932
72
                proc: unsafe {
3933
72
                    std::mem::transmute::<
3934
72
                        vk::PFN_vkCmdSetShadingRateImageEnableNV,
3935
72
                        vk::PFN_vkVoidFunction,
3936
72
                    >(Self::cmd_set_shading_rate_image_enable_nv)
3937
72
                },
3938
72
            },
3939
72
            VulkanCommand {
3940
72
                name: "vkCmdSetStencilCompareMask",
3941
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
3942
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetStencilCompareMask),
3943
72
                proc: unsafe {
3944
72
                    std::mem::transmute::<vk::PFN_vkCmdSetStencilCompareMask, vk::PFN_vkVoidFunction>(
3945
72
                        Self::cmd_set_stencil_compare_mask,
3946
72
                    )
3947
72
                },
3948
72
            },
3949
72
            VulkanCommand {
3950
72
                name: "vkCmdSetStencilOp",
3951
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3952
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetStencilOp),
3953
72
                proc: unsafe {
3954
72
                    std::mem::transmute::<vk::PFN_vkCmdSetStencilOp, vk::PFN_vkVoidFunction>(
3955
72
                        Self::cmd_set_stencil_op,
3956
72
                    )
3957
72
                },
3958
72
            },
3959
72
            VulkanCommand {
3960
72
                name: "vkCmdSetStencilOpEXT",
3961
72
                features: smallvec![
3962
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3963
0
                    Feature::Extension(Extension::EXTShaderObject)
3964
                ],
3965
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetStencilOp),
3966
72
                proc: unsafe {
3967
72
                    std::mem::transmute::<vk::PFN_vkCmdSetStencilOp, vk::PFN_vkVoidFunction>(
3968
72
                        Self::cmd_set_stencil_op,
3969
72
                    )
3970
72
                },
3971
72
            },
3972
72
            VulkanCommand {
3973
72
                name: "vkCmdSetStencilReference",
3974
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
3975
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetStencilReference),
3976
72
                proc: unsafe {
3977
72
                    std::mem::transmute::<vk::PFN_vkCmdSetStencilReference, vk::PFN_vkVoidFunction>(
3978
72
                        Self::cmd_set_stencil_reference,
3979
72
                    )
3980
72
                },
3981
72
            },
3982
72
            VulkanCommand {
3983
72
                name: "vkCmdSetStencilTestEnable",
3984
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3985
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetStencilTestEnable),
3986
72
                proc: unsafe {
3987
72
                    std::mem::transmute::<vk::PFN_vkCmdSetStencilTestEnable, vk::PFN_vkVoidFunction>(
3988
72
                        Self::cmd_set_stencil_test_enable,
3989
72
                    )
3990
72
                },
3991
72
            },
3992
72
            VulkanCommand {
3993
72
                name: "vkCmdSetStencilTestEnableEXT",
3994
72
                features: smallvec![
3995
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3996
0
                    Feature::Extension(Extension::EXTShaderObject)
3997
                ],
3998
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetStencilTestEnable),
3999
72
                proc: unsafe {
4000
72
                    std::mem::transmute::<vk::PFN_vkCmdSetStencilTestEnable, vk::PFN_vkVoidFunction>(
4001
72
                        Self::cmd_set_stencil_test_enable,
4002
72
                    )
4003
72
                },
4004
72
            },
4005
72
            VulkanCommand {
4006
72
                name: "vkCmdSetStencilWriteMask",
4007
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4008
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetStencilWriteMask),
4009
72
                proc: unsafe {
4010
72
                    std::mem::transmute::<vk::PFN_vkCmdSetStencilWriteMask, vk::PFN_vkVoidFunction>(
4011
72
                        Self::cmd_set_stencil_write_mask,
4012
72
                    )
4013
72
                },
4014
72
            },
4015
72
            VulkanCommand {
4016
72
                name: "vkCmdSetTessellationDomainOriginEXT",
4017
72
                features: smallvec![
4018
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
4019
0
                    Feature::Extension(Extension::EXTShaderObject)
4020
                ],
4021
72
                hooked: hooked_commands
4022
72
                    .contains(&LayerVulkanCommand::CmdSetTessellationDomainOriginExt),
4023
72
                proc: unsafe {
4024
72
                    std::mem::transmute::<
4025
72
                        vk::PFN_vkCmdSetTessellationDomainOriginEXT,
4026
72
                        vk::PFN_vkVoidFunction,
4027
72
                    >(Self::cmd_set_tessellation_domain_origin_ext)
4028
72
                },
4029
72
            },
4030
72
            VulkanCommand {
4031
72
                name: "vkCmdSetVertexInputEXT",
4032
72
                features: smallvec![
4033
0
                    Feature::Extension(Extension::EXTVertexInputDynamicState),
4034
0
                    Feature::Extension(Extension::EXTShaderObject)
4035
                ],
4036
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetVertexInputExt),
4037
72
                proc: unsafe {
4038
72
                    std::mem::transmute::<vk::PFN_vkCmdSetVertexInputEXT, vk::PFN_vkVoidFunction>(
4039
72
                        Self::cmd_set_vertex_input_ext,
4040
72
                    )
4041
72
                },
4042
72
            },
4043
72
            VulkanCommand {
4044
72
                name: "vkCmdSetViewport",
4045
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4046
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetViewport),
4047
72
                proc: unsafe {
4048
72
                    std::mem::transmute::<vk::PFN_vkCmdSetViewport, vk::PFN_vkVoidFunction>(
4049
72
                        Self::cmd_set_viewport,
4050
72
                    )
4051
72
                },
4052
72
            },
4053
72
            VulkanCommand {
4054
72
                name: "vkCmdSetViewportShadingRatePaletteNV",
4055
72
                features: smallvec![
Feature::Extension(Extension::NVShadingRateImage)0
],
4056
72
                hooked: hooked_commands
4057
72
                    .contains(&LayerVulkanCommand::CmdSetViewportShadingRatePaletteNv),
4058
72
                proc: unsafe {
4059
72
                    std::mem::transmute::<
4060
72
                        vk::PFN_vkCmdSetViewportShadingRatePaletteNV,
4061
72
                        vk::PFN_vkVoidFunction,
4062
72
                    >(Self::cmd_set_viewport_shading_rate_palette_nv)
4063
72
                },
4064
72
            },
4065
72
            VulkanCommand {
4066
72
                name: "vkCmdSetViewportSwizzleNV",
4067
72
                features: smallvec![
4068
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
4069
0
                    Feature::Extension(Extension::EXTShaderObject)
4070
                ],
4071
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetViewportSwizzleNv),
4072
72
                proc: unsafe {
4073
72
                    std::mem::transmute::<vk::PFN_vkCmdSetViewportSwizzleNV, vk::PFN_vkVoidFunction>(
4074
72
                        Self::cmd_set_viewport_swizzle_nv,
4075
72
                    )
4076
72
                },
4077
72
            },
4078
72
            VulkanCommand {
4079
72
                name: "vkCmdSetViewportWScalingEnableNV",
4080
72
                features: smallvec![
4081
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
4082
0
                    Feature::Extension(Extension::EXTShaderObject)
4083
                ],
4084
72
                hooked: hooked_commands
4085
72
                    .contains(&LayerVulkanCommand::CmdSetViewportWScalingEnableNv),
4086
72
                proc: unsafe {
4087
72
                    std::mem::transmute::<
4088
72
                        vk::PFN_vkCmdSetViewportWScalingEnableNV,
4089
72
                        vk::PFN_vkVoidFunction,
4090
72
                    >(Self::cmd_set_viewport_w_scaling_enable_nv)
4091
72
                },
4092
72
            },
4093
72
            VulkanCommand {
4094
72
                name: "vkCmdSetViewportWScalingNV",
4095
72
                features: smallvec![
Feature::Extension(Extension::NVClipSpaceWScaling)0
],
4096
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetViewportWScalingNv),
4097
72
                proc: unsafe {
4098
72
                    std::mem::transmute::<vk::PFN_vkCmdSetViewportWScalingNV, vk::PFN_vkVoidFunction>(
4099
72
                        Self::cmd_set_viewport_w_scaling_nv,
4100
72
                    )
4101
72
                },
4102
72
            },
4103
72
            VulkanCommand {
4104
72
                name: "vkCmdSetViewportWithCount",
4105
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
4106
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetViewportWithCount),
4107
72
                proc: unsafe {
4108
72
                    std::mem::transmute::<vk::PFN_vkCmdSetViewportWithCount, vk::PFN_vkVoidFunction>(
4109
72
                        Self::cmd_set_viewport_with_count,
4110
72
                    )
4111
72
                },
4112
72
            },
4113
72
            VulkanCommand {
4114
72
                name: "vkCmdSetViewportWithCountEXT",
4115
72
                features: smallvec![
4116
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
4117
0
                    Feature::Extension(Extension::EXTShaderObject)
4118
                ],
4119
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetViewportWithCount),
4120
72
                proc: unsafe {
4121
72
                    std::mem::transmute::<vk::PFN_vkCmdSetViewportWithCount, vk::PFN_vkVoidFunction>(
4122
72
                        Self::cmd_set_viewport_with_count,
4123
72
                    )
4124
72
                },
4125
72
            },
4126
72
            VulkanCommand {
4127
72
                name: "vkCmdSubpassShadingHUAWEI",
4128
72
                features: smallvec![
Feature::Extension(Extension::HUAWEISubpassShading)0
],
4129
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSubpassShadingHuawei),
4130
72
                proc: unsafe {
4131
72
                    std::mem::transmute::<vk::PFN_vkCmdSubpassShadingHUAWEI, vk::PFN_vkVoidFunction>(
4132
72
                        Self::cmd_subpass_shading_huawei,
4133
72
                    )
4134
72
                },
4135
72
            },
4136
72
            VulkanCommand {
4137
72
                name: "vkCmdTraceRaysIndirect2KHR",
4138
72
                features: smallvec![
Feature::Extension(Extension::KHRRayTracingMaintenance1)0
],
4139
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdTraceRaysIndirect2Khr),
4140
72
                proc: unsafe {
4141
72
                    std::mem::transmute::<vk::PFN_vkCmdTraceRaysIndirect2KHR, vk::PFN_vkVoidFunction>(
4142
72
                        Self::cmd_trace_rays_indirect2_khr,
4143
72
                    )
4144
72
                },
4145
72
            },
4146
72
            VulkanCommand {
4147
72
                name: "vkCmdTraceRaysIndirectKHR",
4148
72
                features: smallvec![
Feature::Extension(Extension::KHRRayTracingPipeline)0
],
4149
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdTraceRaysIndirectKhr),
4150
72
                proc: unsafe {
4151
72
                    std::mem::transmute::<vk::PFN_vkCmdTraceRaysIndirectKHR, vk::PFN_vkVoidFunction>(
4152
72
                        Self::cmd_trace_rays_indirect_khr,
4153
72
                    )
4154
72
                },
4155
72
            },
4156
72
            VulkanCommand {
4157
72
                name: "vkCmdTraceRaysKHR",
4158
72
                features: smallvec![
Feature::Extension(Extension::KHRRayTracingPipeline)0
],
4159
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdTraceRaysKhr),
4160
72
                proc: unsafe {
4161
72
                    std::mem::transmute::<vk::PFN_vkCmdTraceRaysKHR, vk::PFN_vkVoidFunction>(
4162
72
                        Self::cmd_trace_rays_khr,
4163
72
                    )
4164
72
                },
4165
72
            },
4166
72
            VulkanCommand {
4167
72
                name: "vkCmdTraceRaysNV",
4168
72
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
4169
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdTraceRaysNv),
4170
72
                proc: unsafe {
4171
72
                    std::mem::transmute::<vk::PFN_vkCmdTraceRaysNV, vk::PFN_vkVoidFunction>(
4172
72
                        Self::cmd_trace_rays_nv,
4173
72
                    )
4174
72
                },
4175
72
            },
4176
72
            VulkanCommand {
4177
72
                name: "vkCmdUpdateBuffer",
4178
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4179
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdUpdateBuffer),
4180
72
                proc: unsafe {
4181
72
                    std::mem::transmute::<vk::PFN_vkCmdUpdateBuffer, vk::PFN_vkVoidFunction>(
4182
72
                        Self::cmd_update_buffer,
4183
72
                    )
4184
72
                },
4185
72
            },
4186
72
            VulkanCommand {
4187
72
                name: "vkCmdWaitEvents",
4188
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4189
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdWaitEvents),
4190
72
                proc: unsafe {
4191
72
                    std::mem::transmute::<vk::PFN_vkCmdWaitEvents, vk::PFN_vkVoidFunction>(
4192
72
                        Self::cmd_wait_events,
4193
72
                    )
4194
72
                },
4195
72
            },
4196
72
            VulkanCommand {
4197
72
                name: "vkCmdWaitEvents2",
4198
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
4199
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdWaitEvents2),
4200
72
                proc: unsafe {
4201
72
                    std::mem::transmute::<vk::PFN_vkCmdWaitEvents2, vk::PFN_vkVoidFunction>(
4202
72
                        Self::cmd_wait_events2,
4203
72
                    )
4204
72
                },
4205
72
            },
4206
72
            VulkanCommand {
4207
72
                name: "vkCmdWaitEvents2KHR",
4208
72
                features: smallvec![
Feature::Extension(Extension::KHRSynchronization2)0
],
4209
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdWaitEvents2),
4210
72
                proc: unsafe {
4211
72
                    std::mem::transmute::<vk::PFN_vkCmdWaitEvents2, vk::PFN_vkVoidFunction>(
4212
72
                        Self::cmd_wait_events2,
4213
72
                    )
4214
72
                },
4215
72
            },
4216
72
            VulkanCommand {
4217
72
                name: "vkCmdWriteAccelerationStructuresPropertiesKHR",
4218
72
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
4219
72
                hooked: hooked_commands
4220
72
                    .contains(&LayerVulkanCommand::CmdWriteAccelerationStructuresPropertiesKhr),
4221
72
                proc: unsafe {
4222
72
                    std::mem::transmute::<
4223
72
                        vk::PFN_vkCmdWriteAccelerationStructuresPropertiesKHR,
4224
72
                        vk::PFN_vkVoidFunction,
4225
72
                    >(Self::cmd_write_acceleration_structures_properties_khr)
4226
72
                },
4227
72
            },
4228
72
            VulkanCommand {
4229
72
                name: "vkCmdWriteAccelerationStructuresPropertiesNV",
4230
72
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
4231
72
                hooked: hooked_commands
4232
72
                    .contains(&LayerVulkanCommand::CmdWriteAccelerationStructuresPropertiesNv),
4233
72
                proc: unsafe {
4234
72
                    std::mem::transmute::<
4235
72
                        vk::PFN_vkCmdWriteAccelerationStructuresPropertiesNV,
4236
72
                        vk::PFN_vkVoidFunction,
4237
72
                    >(Self::cmd_write_acceleration_structures_properties_nv)
4238
72
                },
4239
72
            },
4240
72
            VulkanCommand {
4241
72
                name: "vkCmdWriteBufferMarker2AMD",
4242
72
                features: smallvec![
Feature::Extension(Extension::KHRSynchronization2)0
],
4243
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdWriteBufferMarker2Amd),
4244
72
                proc: unsafe {
4245
72
                    std::mem::transmute::<vk::PFN_vkCmdWriteBufferMarker2AMD, vk::PFN_vkVoidFunction>(
4246
72
                        Self::cmd_write_buffer_marker2_amd,
4247
72
                    )
4248
72
                },
4249
72
            },
4250
72
            VulkanCommand {
4251
72
                name: "vkCmdWriteBufferMarkerAMD",
4252
72
                features: smallvec![
Feature::Extension(Extension::AMDBufferMarker)0
],
4253
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdWriteBufferMarkerAmd),
4254
72
                proc: unsafe {
4255
72
                    std::mem::transmute::<vk::PFN_vkCmdWriteBufferMarkerAMD, vk::PFN_vkVoidFunction>(
4256
72
                        Self::cmd_write_buffer_marker_amd,
4257
72
                    )
4258
72
                },
4259
72
            },
4260
72
            VulkanCommand {
4261
72
                name: "vkCmdWriteMicromapsPropertiesEXT",
4262
72
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
4263
72
                hooked: hooked_commands
4264
72
                    .contains(&LayerVulkanCommand::CmdWriteMicromapsPropertiesExt),
4265
72
                proc: unsafe {
4266
72
                    std::mem::transmute::<
4267
72
                        vk::PFN_vkCmdWriteMicromapsPropertiesEXT,
4268
72
                        vk::PFN_vkVoidFunction,
4269
72
                    >(Self::cmd_write_micromaps_properties_ext)
4270
72
                },
4271
72
            },
4272
72
            VulkanCommand {
4273
72
                name: "vkCmdWriteTimestamp",
4274
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4275
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdWriteTimestamp),
4276
72
                proc: unsafe {
4277
72
                    std::mem::transmute::<vk::PFN_vkCmdWriteTimestamp, vk::PFN_vkVoidFunction>(
4278
72
                        Self::cmd_write_timestamp,
4279
72
                    )
4280
72
                },
4281
72
            },
4282
72
            VulkanCommand {
4283
72
                name: "vkCmdWriteTimestamp2",
4284
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
4285
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdWriteTimestamp2),
4286
72
                proc: unsafe {
4287
72
                    std::mem::transmute::<vk::PFN_vkCmdWriteTimestamp2, vk::PFN_vkVoidFunction>(
4288
72
                        Self::cmd_write_timestamp2,
4289
72
                    )
4290
72
                },
4291
72
            },
4292
72
            VulkanCommand {
4293
72
                name: "vkCmdWriteTimestamp2KHR",
4294
72
                features: smallvec![
Feature::Extension(Extension::KHRSynchronization2)0
],
4295
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdWriteTimestamp2),
4296
72
                proc: unsafe {
4297
72
                    std::mem::transmute::<vk::PFN_vkCmdWriteTimestamp2, vk::PFN_vkVoidFunction>(
4298
72
                        Self::cmd_write_timestamp2,
4299
72
                    )
4300
72
                },
4301
72
            },
4302
72
            VulkanCommand {
4303
72
                name: "vkCompileDeferredNV",
4304
72
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
4305
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CompileDeferredNv),
4306
72
                proc: unsafe {
4307
72
                    std::mem::transmute::<vk::PFN_vkCompileDeferredNV, vk::PFN_vkVoidFunction>(
4308
72
                        Self::compile_deferred_nv,
4309
72
                    )
4310
72
                },
4311
72
            },
4312
72
            VulkanCommand {
4313
72
                name: "vkCopyAccelerationStructureKHR",
4314
72
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
4315
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CopyAccelerationStructureKhr),
4316
72
                proc: unsafe {
4317
72
                    std::mem::transmute::<
4318
72
                        vk::PFN_vkCopyAccelerationStructureKHR,
4319
72
                        vk::PFN_vkVoidFunction,
4320
72
                    >(Self::copy_acceleration_structure_khr)
4321
72
                },
4322
72
            },
4323
72
            VulkanCommand {
4324
72
                name: "vkCopyAccelerationStructureToMemoryKHR",
4325
72
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
4326
72
                hooked: hooked_commands
4327
72
                    .contains(&LayerVulkanCommand::CopyAccelerationStructureToMemoryKhr),
4328
72
                proc: unsafe {
4329
72
                    std::mem::transmute::<
4330
72
                        vk::PFN_vkCopyAccelerationStructureToMemoryKHR,
4331
72
                        vk::PFN_vkVoidFunction,
4332
72
                    >(Self::copy_acceleration_structure_to_memory_khr)
4333
72
                },
4334
72
            },
4335
72
            VulkanCommand {
4336
72
                name: "vkCopyMemoryToAccelerationStructureKHR",
4337
72
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
4338
72
                hooked: hooked_commands
4339
72
                    .contains(&LayerVulkanCommand::CopyMemoryToAccelerationStructureKhr),
4340
72
                proc: unsafe {
4341
72
                    std::mem::transmute::<
4342
72
                        vk::PFN_vkCopyMemoryToAccelerationStructureKHR,
4343
72
                        vk::PFN_vkVoidFunction,
4344
72
                    >(Self::copy_memory_to_acceleration_structure_khr)
4345
72
                },
4346
72
            },
4347
72
            VulkanCommand {
4348
72
                name: "vkCopyMemoryToMicromapEXT",
4349
72
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
4350
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CopyMemoryToMicromapExt),
4351
72
                proc: unsafe {
4352
72
                    std::mem::transmute::<vk::PFN_vkCopyMemoryToMicromapEXT, vk::PFN_vkVoidFunction>(
4353
72
                        Self::copy_memory_to_micromap_ext,
4354
72
                    )
4355
72
                },
4356
72
            },
4357
72
            VulkanCommand {
4358
72
                name: "vkCopyMicromapEXT",
4359
72
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
4360
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CopyMicromapExt),
4361
72
                proc: unsafe {
4362
72
                    std::mem::transmute::<vk::PFN_vkCopyMicromapEXT, vk::PFN_vkVoidFunction>(
4363
72
                        Self::copy_micromap_ext,
4364
72
                    )
4365
72
                },
4366
72
            },
4367
72
            VulkanCommand {
4368
72
                name: "vkCopyMicromapToMemoryEXT",
4369
72
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
4370
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CopyMicromapToMemoryExt),
4371
72
                proc: unsafe {
4372
72
                    std::mem::transmute::<vk::PFN_vkCopyMicromapToMemoryEXT, vk::PFN_vkVoidFunction>(
4373
72
                        Self::copy_micromap_to_memory_ext,
4374
72
                    )
4375
72
                },
4376
72
            },
4377
72
            VulkanCommand {
4378
72
                name: "vkCreateAccelerationStructureKHR",
4379
72
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
4380
72
                hooked: hooked_commands
4381
72
                    .contains(&LayerVulkanCommand::CreateAccelerationStructureKhr),
4382
72
                proc: unsafe {
4383
72
                    std::mem::transmute::<
4384
72
                        vk::PFN_vkCreateAccelerationStructureKHR,
4385
72
                        vk::PFN_vkVoidFunction,
4386
72
                    >(Self::create_acceleration_structure_khr)
4387
72
                },
4388
72
            },
4389
72
            VulkanCommand {
4390
72
                name: "vkCreateAccelerationStructureNV",
4391
72
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
4392
72
                hooked: hooked_commands
4393
72
                    .contains(&LayerVulkanCommand::CreateAccelerationStructureNv),
4394
72
                proc: unsafe {
4395
72
                    std::mem::transmute::<
4396
72
                        vk::PFN_vkCreateAccelerationStructureNV,
4397
72
                        vk::PFN_vkVoidFunction,
4398
72
                    >(Self::create_acceleration_structure_nv)
4399
72
                },
4400
72
            },
4401
72
            VulkanCommand {
4402
72
                name: "vkCreateBuffer",
4403
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4404
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateBuffer),
4405
72
                proc: unsafe {
4406
72
                    std::mem::transmute::<vk::PFN_vkCreateBuffer, vk::PFN_vkVoidFunction>(
4407
72
                        Self::create_buffer,
4408
72
                    )
4409
72
                },
4410
72
            },
4411
72
            VulkanCommand {
4412
72
                name: "vkCreateBufferCollectionFUCHSIA",
4413
72
                features: smallvec![
Feature::Extension(Extension::FUCHSIABufferCollection)0
],
4414
72
                hooked: hooked_commands
4415
72
                    .contains(&LayerVulkanCommand::CreateBufferCollectionFuchsia),
4416
72
                proc: unsafe {
4417
72
                    std::mem::transmute::<
4418
72
                        vk::PFN_vkCreateBufferCollectionFUCHSIA,
4419
72
                        vk::PFN_vkVoidFunction,
4420
72
                    >(Self::create_buffer_collection_fuchsia)
4421
72
                },
4422
72
            },
4423
72
            VulkanCommand {
4424
72
                name: "vkCreateBufferView",
4425
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4426
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateBufferView),
4427
72
                proc: unsafe {
4428
72
                    std::mem::transmute::<vk::PFN_vkCreateBufferView, vk::PFN_vkVoidFunction>(
4429
72
                        Self::create_buffer_view,
4430
72
                    )
4431
72
                },
4432
72
            },
4433
72
            VulkanCommand {
4434
72
                name: "vkCreateCommandPool",
4435
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4436
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateCommandPool),
4437
72
                proc: unsafe {
4438
72
                    std::mem::transmute::<vk::PFN_vkCreateCommandPool, vk::PFN_vkVoidFunction>(
4439
72
                        Self::create_command_pool,
4440
72
                    )
4441
72
                },
4442
72
            },
4443
72
            VulkanCommand {
4444
72
                name: "vkCreateComputePipelines",
4445
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4446
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateComputePipelines),
4447
72
                proc: unsafe {
4448
72
                    std::mem::transmute::<vk::PFN_vkCreateComputePipelines, vk::PFN_vkVoidFunction>(
4449
72
                        Self::create_compute_pipelines,
4450
72
                    )
4451
72
                },
4452
72
            },
4453
72
            VulkanCommand {
4454
72
                name: "vkCreateCuFunctionNVX",
4455
72
                features: smallvec![
Feature::Extension(Extension::NVXBinaryImport)0
],
4456
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateCuFunctionNvx),
4457
72
                proc: unsafe {
4458
72
                    std::mem::transmute::<vk::PFN_vkCreateCuFunctionNVX, vk::PFN_vkVoidFunction>(
4459
72
                        Self::create_cu_function_nvx,
4460
72
                    )
4461
72
                },
4462
72
            },
4463
72
            VulkanCommand {
4464
72
                name: "vkCreateCuModuleNVX",
4465
72
                features: smallvec![
Feature::Extension(Extension::NVXBinaryImport)0
],
4466
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateCuModuleNvx),
4467
72
                proc: unsafe {
4468
72
                    std::mem::transmute::<vk::PFN_vkCreateCuModuleNVX, vk::PFN_vkVoidFunction>(
4469
72
                        Self::create_cu_module_nvx,
4470
72
                    )
4471
72
                },
4472
72
            },
4473
72
            VulkanCommand {
4474
72
                name: "vkCreateDeferredOperationKHR",
4475
72
                features: smallvec![
Feature::Extension(Extension::KHRDeferredHostOperations)0
],
4476
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateDeferredOperationKhr),
4477
72
                proc: unsafe {
4478
72
                    std::mem::transmute::<
4479
72
                        vk::PFN_vkCreateDeferredOperationKHR,
4480
72
                        vk::PFN_vkVoidFunction,
4481
72
                    >(Self::create_deferred_operation_khr)
4482
72
                },
4483
72
            },
4484
72
            VulkanCommand {
4485
72
                name: "vkCreateDescriptorPool",
4486
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4487
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateDescriptorPool),
4488
72
                proc: unsafe {
4489
72
                    std::mem::transmute::<vk::PFN_vkCreateDescriptorPool, vk::PFN_vkVoidFunction>(
4490
72
                        Self::create_descriptor_pool,
4491
72
                    )
4492
72
                },
4493
72
            },
4494
72
            VulkanCommand {
4495
72
                name: "vkCreateDescriptorSetLayout",
4496
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4497
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateDescriptorSetLayout),
4498
72
                proc: unsafe {
4499
72
                    std::mem::transmute::<vk::PFN_vkCreateDescriptorSetLayout, vk::PFN_vkVoidFunction>(
4500
72
                        Self::create_descriptor_set_layout,
4501
72
                    )
4502
72
                },
4503
72
            },
4504
72
            VulkanCommand {
4505
72
                name: "vkCreateDescriptorUpdateTemplate",
4506
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
4507
72
                hooked: hooked_commands
4508
72
                    .contains(&LayerVulkanCommand::CreateDescriptorUpdateTemplate),
4509
72
                proc: unsafe {
4510
72
                    std::mem::transmute::<
4511
72
                        vk::PFN_vkCreateDescriptorUpdateTemplate,
4512
72
                        vk::PFN_vkVoidFunction,
4513
72
                    >(Self::create_descriptor_update_template)
4514
72
                },
4515
72
            },
4516
72
            VulkanCommand {
4517
72
                name: "vkCreateDescriptorUpdateTemplateKHR",
4518
72
                features: smallvec![
Feature::Extension(Extension::KHRDescriptorUpdateTemplate)0
],
4519
72
                hooked: hooked_commands
4520
72
                    .contains(&LayerVulkanCommand::CreateDescriptorUpdateTemplate),
4521
72
                proc: unsafe {
4522
72
                    std::mem::transmute::<
4523
72
                        vk::PFN_vkCreateDescriptorUpdateTemplate,
4524
72
                        vk::PFN_vkVoidFunction,
4525
72
                    >(Self::create_descriptor_update_template)
4526
72
                },
4527
72
            },
4528
72
            VulkanCommand {
4529
72
                name: "vkCreateEvent",
4530
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4531
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateEvent),
4532
72
                proc: unsafe {
4533
72
                    std::mem::transmute::<vk::PFN_vkCreateEvent, vk::PFN_vkVoidFunction>(
4534
72
                        Self::create_event,
4535
72
                    )
4536
72
                },
4537
72
            },
4538
72
            VulkanCommand {
4539
72
                name: "vkCreateFence",
4540
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4541
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateFence),
4542
72
                proc: unsafe {
4543
72
                    std::mem::transmute::<vk::PFN_vkCreateFence, vk::PFN_vkVoidFunction>(
4544
72
                        Self::create_fence,
4545
72
                    )
4546
72
                },
4547
72
            },
4548
72
            VulkanCommand {
4549
72
                name: "vkCreateFramebuffer",
4550
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4551
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateFramebuffer),
4552
72
                proc: unsafe {
4553
72
                    std::mem::transmute::<vk::PFN_vkCreateFramebuffer, vk::PFN_vkVoidFunction>(
4554
72
                        Self::create_framebuffer,
4555
72
                    )
4556
72
                },
4557
72
            },
4558
72
            VulkanCommand {
4559
72
                name: "vkCreateGraphicsPipelines",
4560
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4561
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateGraphicsPipelines),
4562
72
                proc: unsafe {
4563
72
                    std::mem::transmute::<vk::PFN_vkCreateGraphicsPipelines, vk::PFN_vkVoidFunction>(
4564
72
                        Self::create_graphics_pipelines,
4565
72
                    )
4566
72
                },
4567
72
            },
4568
72
            VulkanCommand {
4569
72
                name: "vkCreateImage",
4570
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4571
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateImage),
4572
72
                proc: unsafe {
4573
72
                    std::mem::transmute::<vk::PFN_vkCreateImage, vk::PFN_vkVoidFunction>(
4574
72
                        Self::create_image,
4575
72
                    )
4576
72
                },
4577
72
            },
4578
72
            VulkanCommand {
4579
72
                name: "vkCreateImageView",
4580
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4581
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateImageView),
4582
72
                proc: unsafe {
4583
72
                    std::mem::transmute::<vk::PFN_vkCreateImageView, vk::PFN_vkVoidFunction>(
4584
72
                        Self::create_image_view,
4585
72
                    )
4586
72
                },
4587
72
            },
4588
72
            VulkanCommand {
4589
72
                name: "vkCreateIndirectCommandsLayoutNV",
4590
72
                features: smallvec![
Feature::Extension(Extension::NVDeviceGeneratedCommands)0
],
4591
72
                hooked: hooked_commands
4592
72
                    .contains(&LayerVulkanCommand::CreateIndirectCommandsLayoutNv),
4593
72
                proc: unsafe {
4594
72
                    std::mem::transmute::<
4595
72
                        vk::PFN_vkCreateIndirectCommandsLayoutNV,
4596
72
                        vk::PFN_vkVoidFunction,
4597
72
                    >(Self::create_indirect_commands_layout_nv)
4598
72
                },
4599
72
            },
4600
72
            VulkanCommand {
4601
72
                name: "vkCreateMicromapEXT",
4602
72
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
4603
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateMicromapExt),
4604
72
                proc: unsafe {
4605
72
                    std::mem::transmute::<vk::PFN_vkCreateMicromapEXT, vk::PFN_vkVoidFunction>(
4606
72
                        Self::create_micromap_ext,
4607
72
                    )
4608
72
                },
4609
72
            },
4610
72
            VulkanCommand {
4611
72
                name: "vkCreateOpticalFlowSessionNV",
4612
72
                features: smallvec![
Feature::Extension(Extension::NVOpticalFlow)0
],
4613
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateOpticalFlowSessionNv),
4614
72
                proc: unsafe {
4615
72
                    std::mem::transmute::<
4616
72
                        vk::PFN_vkCreateOpticalFlowSessionNV,
4617
72
                        vk::PFN_vkVoidFunction,
4618
72
                    >(Self::create_optical_flow_session_nv)
4619
72
                },
4620
72
            },
4621
72
            VulkanCommand {
4622
72
                name: "vkCreatePipelineCache",
4623
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4624
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreatePipelineCache),
4625
72
                proc: unsafe {
4626
72
                    std::mem::transmute::<vk::PFN_vkCreatePipelineCache, vk::PFN_vkVoidFunction>(
4627
72
                        Self::create_pipeline_cache,
4628
72
                    )
4629
72
                },
4630
72
            },
4631
72
            VulkanCommand {
4632
72
                name: "vkCreatePipelineLayout",
4633
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4634
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreatePipelineLayout),
4635
72
                proc: unsafe {
4636
72
                    std::mem::transmute::<vk::PFN_vkCreatePipelineLayout, vk::PFN_vkVoidFunction>(
4637
72
                        Self::create_pipeline_layout,
4638
72
                    )
4639
72
                },
4640
72
            },
4641
72
            VulkanCommand {
4642
72
                name: "vkCreatePrivateDataSlot",
4643
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
4644
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreatePrivateDataSlot),
4645
72
                proc: unsafe {
4646
72
                    std::mem::transmute::<vk::PFN_vkCreatePrivateDataSlot, vk::PFN_vkVoidFunction>(
4647
72
                        Self::create_private_data_slot,
4648
72
                    )
4649
72
                },
4650
72
            },
4651
72
            VulkanCommand {
4652
72
                name: "vkCreatePrivateDataSlotEXT",
4653
72
                features: smallvec![
Feature::Extension(Extension::EXTPrivateData)0
],
4654
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreatePrivateDataSlot),
4655
72
                proc: unsafe {
4656
72
                    std::mem::transmute::<vk::PFN_vkCreatePrivateDataSlot, vk::PFN_vkVoidFunction>(
4657
72
                        Self::create_private_data_slot,
4658
72
                    )
4659
72
                },
4660
72
            },
4661
72
            VulkanCommand {
4662
72
                name: "vkCreateQueryPool",
4663
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4664
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateQueryPool),
4665
72
                proc: unsafe {
4666
72
                    std::mem::transmute::<vk::PFN_vkCreateQueryPool, vk::PFN_vkVoidFunction>(
4667
72
                        Self::create_query_pool,
4668
72
                    )
4669
72
                },
4670
72
            },
4671
72
            VulkanCommand {
4672
72
                name: "vkCreateRayTracingPipelinesKHR",
4673
72
                features: smallvec![
Feature::Extension(Extension::KHRRayTracingPipeline)0
],
4674
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateRayTracingPipelinesKhr),
4675
72
                proc: unsafe {
4676
72
                    std::mem::transmute::<
4677
72
                        vk::PFN_vkCreateRayTracingPipelinesKHR,
4678
72
                        vk::PFN_vkVoidFunction,
4679
72
                    >(Self::create_ray_tracing_pipelines_khr)
4680
72
                },
4681
72
            },
4682
72
            VulkanCommand {
4683
72
                name: "vkCreateRayTracingPipelinesNV",
4684
72
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
4685
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateRayTracingPipelinesNv),
4686
72
                proc: unsafe {
4687
72
                    std::mem::transmute::<
4688
72
                        vk::PFN_vkCreateRayTracingPipelinesNV,
4689
72
                        vk::PFN_vkVoidFunction,
4690
72
                    >(Self::create_ray_tracing_pipelines_nv)
4691
72
                },
4692
72
            },
4693
72
            VulkanCommand {
4694
72
                name: "vkCreateRenderPass",
4695
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4696
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateRenderPass),
4697
72
                proc: unsafe {
4698
72
                    std::mem::transmute::<vk::PFN_vkCreateRenderPass, vk::PFN_vkVoidFunction>(
4699
72
                        Self::create_render_pass,
4700
72
                    )
4701
72
                },
4702
72
            },
4703
72
            VulkanCommand {
4704
72
                name: "vkCreateRenderPass2",
4705
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
4706
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateRenderPass2),
4707
72
                proc: unsafe {
4708
72
                    std::mem::transmute::<vk::PFN_vkCreateRenderPass2, vk::PFN_vkVoidFunction>(
4709
72
                        Self::create_render_pass2,
4710
72
                    )
4711
72
                },
4712
72
            },
4713
72
            VulkanCommand {
4714
72
                name: "vkCreateRenderPass2KHR",
4715
72
                features: smallvec![
Feature::Extension(Extension::KHRCreateRenderpass2)0
],
4716
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateRenderPass2),
4717
72
                proc: unsafe {
4718
72
                    std::mem::transmute::<vk::PFN_vkCreateRenderPass2, vk::PFN_vkVoidFunction>(
4719
72
                        Self::create_render_pass2,
4720
72
                    )
4721
72
                },
4722
72
            },
4723
72
            VulkanCommand {
4724
72
                name: "vkCreateSampler",
4725
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4726
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateSampler),
4727
72
                proc: unsafe {
4728
72
                    std::mem::transmute::<vk::PFN_vkCreateSampler, vk::PFN_vkVoidFunction>(
4729
72
                        Self::create_sampler,
4730
72
                    )
4731
72
                },
4732
72
            },
4733
72
            VulkanCommand {
4734
72
                name: "vkCreateSamplerYcbcrConversion",
4735
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
4736
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateSamplerYcbcrConversion),
4737
72
                proc: unsafe {
4738
72
                    std::mem::transmute::<
4739
72
                        vk::PFN_vkCreateSamplerYcbcrConversion,
4740
72
                        vk::PFN_vkVoidFunction,
4741
72
                    >(Self::create_sampler_ycbcr_conversion)
4742
72
                },
4743
72
            },
4744
72
            VulkanCommand {
4745
72
                name: "vkCreateSamplerYcbcrConversionKHR",
4746
72
                features: smallvec![
Feature::Extension(Extension::KHRSamplerYcbcrConversion)0
],
4747
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateSamplerYcbcrConversion),
4748
72
                proc: unsafe {
4749
72
                    std::mem::transmute::<
4750
72
                        vk::PFN_vkCreateSamplerYcbcrConversion,
4751
72
                        vk::PFN_vkVoidFunction,
4752
72
                    >(Self::create_sampler_ycbcr_conversion)
4753
72
                },
4754
72
            },
4755
72
            VulkanCommand {
4756
72
                name: "vkCreateSemaphore",
4757
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4758
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateSemaphore),
4759
72
                proc: unsafe {
4760
72
                    std::mem::transmute::<vk::PFN_vkCreateSemaphore, vk::PFN_vkVoidFunction>(
4761
72
                        Self::create_semaphore,
4762
72
                    )
4763
72
                },
4764
72
            },
4765
72
            VulkanCommand {
4766
72
                name: "vkCreateShaderModule",
4767
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4768
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateShaderModule),
4769
72
                proc: unsafe {
4770
72
                    std::mem::transmute::<vk::PFN_vkCreateShaderModule, vk::PFN_vkVoidFunction>(
4771
72
                        Self::create_shader_module,
4772
72
                    )
4773
72
                },
4774
72
            },
4775
72
            VulkanCommand {
4776
72
                name: "vkCreateSharedSwapchainsKHR",
4777
72
                features: smallvec![
Feature::Extension(Extension::KHRDisplaySwapchain)0
],
4778
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateSharedSwapchainsKhr),
4779
72
                proc: unsafe {
4780
72
                    std::mem::transmute::<vk::PFN_vkCreateSharedSwapchainsKHR, vk::PFN_vkVoidFunction>(
4781
72
                        Self::create_shared_swapchains_khr,
4782
72
                    )
4783
72
                },
4784
72
            },
4785
72
            VulkanCommand {
4786
72
                name: "vkCreateSwapchainKHR",
4787
72
                features: smallvec![
Feature::Extension(Extension::KHRSwapchain)0
],
4788
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateSwapchainKhr),
4789
72
                proc: unsafe {
4790
72
                    std::mem::transmute::<vk::PFN_vkCreateSwapchainKHR, vk::PFN_vkVoidFunction>(
4791
72
                        Self::create_swapchain_khr,
4792
72
                    )
4793
72
                },
4794
72
            },
4795
72
            VulkanCommand {
4796
72
                name: "vkCreateValidationCacheEXT",
4797
72
                features: smallvec![
Feature::Extension(Extension::EXTValidationCache)0
],
4798
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateValidationCacheExt),
4799
72
                proc: unsafe {
4800
72
                    std::mem::transmute::<vk::PFN_vkCreateValidationCacheEXT, vk::PFN_vkVoidFunction>(
4801
72
                        Self::create_validation_cache_ext,
4802
72
                    )
4803
72
                },
4804
72
            },
4805
72
            VulkanCommand {
4806
72
                name: "vkCreateVideoSessionKHR",
4807
72
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
4808
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateVideoSessionKhr),
4809
72
                proc: unsafe {
4810
72
                    std::mem::transmute::<vk::PFN_vkCreateVideoSessionKHR, vk::PFN_vkVoidFunction>(
4811
72
                        Self::create_video_session_khr,
4812
72
                    )
4813
72
                },
4814
72
            },
4815
72
            VulkanCommand {
4816
72
                name: "vkCreateVideoSessionParametersKHR",
4817
72
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
4818
72
                hooked: hooked_commands
4819
72
                    .contains(&LayerVulkanCommand::CreateVideoSessionParametersKhr),
4820
72
                proc: unsafe {
4821
72
                    std::mem::transmute::<
4822
72
                        vk::PFN_vkCreateVideoSessionParametersKHR,
4823
72
                        vk::PFN_vkVoidFunction,
4824
72
                    >(Self::create_video_session_parameters_khr)
4825
72
                },
4826
72
            },
4827
72
            VulkanCommand {
4828
72
                name: "vkDebugMarkerSetObjectNameEXT",
4829
72
                features: smallvec![
Feature::Extension(Extension::EXTDebugMarker)0
],
4830
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DebugMarkerSetObjectNameExt),
4831
72
                proc: unsafe {
4832
72
                    std::mem::transmute::<
4833
72
                        vk::PFN_vkDebugMarkerSetObjectNameEXT,
4834
72
                        vk::PFN_vkVoidFunction,
4835
72
                    >(Self::debug_marker_set_object_name_ext)
4836
72
                },
4837
72
            },
4838
72
            VulkanCommand {
4839
72
                name: "vkDebugMarkerSetObjectTagEXT",
4840
72
                features: smallvec![
Feature::Extension(Extension::EXTDebugMarker)0
],
4841
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DebugMarkerSetObjectTagExt),
4842
72
                proc: unsafe {
4843
72
                    std::mem::transmute::<
4844
72
                        vk::PFN_vkDebugMarkerSetObjectTagEXT,
4845
72
                        vk::PFN_vkVoidFunction,
4846
72
                    >(Self::debug_marker_set_object_tag_ext)
4847
72
                },
4848
72
            },
4849
72
            VulkanCommand {
4850
72
                name: "vkDeferredOperationJoinKHR",
4851
72
                features: smallvec![
Feature::Extension(Extension::KHRDeferredHostOperations)0
],
4852
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DeferredOperationJoinKhr),
4853
72
                proc: unsafe {
4854
72
                    std::mem::transmute::<vk::PFN_vkDeferredOperationJoinKHR, vk::PFN_vkVoidFunction>(
4855
72
                        Self::deferred_operation_join_khr,
4856
72
                    )
4857
72
                },
4858
72
            },
4859
72
            VulkanCommand {
4860
72
                name: "vkDestroyAccelerationStructureKHR",
4861
72
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
4862
72
                hooked: hooked_commands
4863
72
                    .contains(&LayerVulkanCommand::DestroyAccelerationStructureKhr),
4864
72
                proc: unsafe {
4865
72
                    std::mem::transmute::<
4866
72
                        vk::PFN_vkDestroyAccelerationStructureKHR,
4867
72
                        vk::PFN_vkVoidFunction,
4868
72
                    >(Self::destroy_acceleration_structure_khr)
4869
72
                },
4870
72
            },
4871
72
            VulkanCommand {
4872
72
                name: "vkDestroyAccelerationStructureNV",
4873
72
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
4874
72
                hooked: hooked_commands
4875
72
                    .contains(&LayerVulkanCommand::DestroyAccelerationStructureNv),
4876
72
                proc: unsafe {
4877
72
                    std::mem::transmute::<
4878
72
                        vk::PFN_vkDestroyAccelerationStructureNV,
4879
72
                        vk::PFN_vkVoidFunction,
4880
72
                    >(Self::destroy_acceleration_structure_nv)
4881
72
                },
4882
72
            },
4883
72
            VulkanCommand {
4884
72
                name: "vkDestroyBuffer",
4885
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4886
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyBuffer),
4887
72
                proc: unsafe {
4888
72
                    std::mem::transmute::<vk::PFN_vkDestroyBuffer, vk::PFN_vkVoidFunction>(
4889
72
                        Self::destroy_buffer,
4890
72
                    )
4891
72
                },
4892
72
            },
4893
72
            VulkanCommand {
4894
72
                name: "vkDestroyBufferCollectionFUCHSIA",
4895
72
                features: smallvec![
Feature::Extension(Extension::FUCHSIABufferCollection)0
],
4896
72
                hooked: hooked_commands
4897
72
                    .contains(&LayerVulkanCommand::DestroyBufferCollectionFuchsia),
4898
72
                proc: unsafe {
4899
72
                    std::mem::transmute::<
4900
72
                        vk::PFN_vkDestroyBufferCollectionFUCHSIA,
4901
72
                        vk::PFN_vkVoidFunction,
4902
72
                    >(Self::destroy_buffer_collection_fuchsia)
4903
72
                },
4904
72
            },
4905
72
            VulkanCommand {
4906
72
                name: "vkDestroyBufferView",
4907
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4908
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyBufferView),
4909
72
                proc: unsafe {
4910
72
                    std::mem::transmute::<vk::PFN_vkDestroyBufferView, vk::PFN_vkVoidFunction>(
4911
72
                        Self::destroy_buffer_view,
4912
72
                    )
4913
72
                },
4914
72
            },
4915
72
            VulkanCommand {
4916
72
                name: "vkDestroyCommandPool",
4917
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4918
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyCommandPool),
4919
72
                proc: unsafe {
4920
72
                    std::mem::transmute::<vk::PFN_vkDestroyCommandPool, vk::PFN_vkVoidFunction>(
4921
72
                        Self::destroy_command_pool,
4922
72
                    )
4923
72
                },
4924
72
            },
4925
72
            VulkanCommand {
4926
72
                name: "vkDestroyCuFunctionNVX",
4927
72
                features: smallvec![
Feature::Extension(Extension::NVXBinaryImport)0
],
4928
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyCuFunctionNvx),
4929
72
                proc: unsafe {
4930
72
                    std::mem::transmute::<vk::PFN_vkDestroyCuFunctionNVX, vk::PFN_vkVoidFunction>(
4931
72
                        Self::destroy_cu_function_nvx,
4932
72
                    )
4933
72
                },
4934
72
            },
4935
72
            VulkanCommand {
4936
72
                name: "vkDestroyCuModuleNVX",
4937
72
                features: smallvec![
Feature::Extension(Extension::NVXBinaryImport)0
],
4938
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyCuModuleNvx),
4939
72
                proc: unsafe {
4940
72
                    std::mem::transmute::<vk::PFN_vkDestroyCuModuleNVX, vk::PFN_vkVoidFunction>(
4941
72
                        Self::destroy_cu_module_nvx,
4942
72
                    )
4943
72
                },
4944
72
            },
4945
72
            VulkanCommand {
4946
72
                name: "vkDestroyDeferredOperationKHR",
4947
72
                features: smallvec![
Feature::Extension(Extension::KHRDeferredHostOperations)0
],
4948
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyDeferredOperationKhr),
4949
72
                proc: unsafe {
4950
72
                    std::mem::transmute::<
4951
72
                        vk::PFN_vkDestroyDeferredOperationKHR,
4952
72
                        vk::PFN_vkVoidFunction,
4953
72
                    >(Self::destroy_deferred_operation_khr)
4954
72
                },
4955
72
            },
4956
72
            VulkanCommand {
4957
72
                name: "vkDestroyDescriptorPool",
4958
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4959
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyDescriptorPool),
4960
72
                proc: unsafe {
4961
72
                    std::mem::transmute::<vk::PFN_vkDestroyDescriptorPool, vk::PFN_vkVoidFunction>(
4962
72
                        Self::destroy_descriptor_pool,
4963
72
                    )
4964
72
                },
4965
72
            },
4966
72
            VulkanCommand {
4967
72
                name: "vkDestroyDescriptorSetLayout",
4968
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4969
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyDescriptorSetLayout),
4970
72
                proc: unsafe {
4971
72
                    std::mem::transmute::<
4972
72
                        vk::PFN_vkDestroyDescriptorSetLayout,
4973
72
                        vk::PFN_vkVoidFunction,
4974
72
                    >(Self::destroy_descriptor_set_layout)
4975
72
                },
4976
72
            },
4977
72
            VulkanCommand {
4978
72
                name: "vkDestroyDescriptorUpdateTemplate",
4979
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
4980
72
                hooked: hooked_commands
4981
72
                    .contains(&LayerVulkanCommand::DestroyDescriptorUpdateTemplate),
4982
72
                proc: unsafe {
4983
72
                    std::mem::transmute::<
4984
72
                        vk::PFN_vkDestroyDescriptorUpdateTemplate,
4985
72
                        vk::PFN_vkVoidFunction,
4986
72
                    >(Self::destroy_descriptor_update_template)
4987
72
                },
4988
72
            },
4989
72
            VulkanCommand {
4990
72
                name: "vkDestroyDescriptorUpdateTemplateKHR",
4991
72
                features: smallvec![
Feature::Extension(Extension::KHRDescriptorUpdateTemplate)0
],
4992
72
                hooked: hooked_commands
4993
72
                    .contains(&LayerVulkanCommand::DestroyDescriptorUpdateTemplate),
4994
72
                proc: unsafe {
4995
72
                    std::mem::transmute::<
4996
72
                        vk::PFN_vkDestroyDescriptorUpdateTemplate,
4997
72
                        vk::PFN_vkVoidFunction,
4998
72
                    >(Self::destroy_descriptor_update_template)
4999
72
                },
5000
72
            },
5001
72
            VulkanCommand {
5002
72
                name: "vkDestroyDevice",
5003
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5004
                hooked: true,
5005
                proc: unsafe {
5006
72
                    std::mem::transmute::<vk::PFN_vkDestroyDevice, vk::PFN_vkVoidFunction>(
5007
72
                        Self::destroy_device,
5008
72
                    )
5009
72
                },
5010
72
            },
5011
72
            VulkanCommand {
5012
72
                name: "vkDestroyEvent",
5013
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5014
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyEvent),
5015
72
                proc: unsafe {
5016
72
                    std::mem::transmute::<vk::PFN_vkDestroyEvent, vk::PFN_vkVoidFunction>(
5017
72
                        Self::destroy_event,
5018
72
                    )
5019
72
                },
5020
72
            },
5021
72
            VulkanCommand {
5022
72
                name: "vkDestroyFence",
5023
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5024
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyFence),
5025
72
                proc: unsafe {
5026
72
                    std::mem::transmute::<vk::PFN_vkDestroyFence, vk::PFN_vkVoidFunction>(
5027
72
                        Self::destroy_fence,
5028
72
                    )
5029
72
                },
5030
72
            },
5031
72
            VulkanCommand {
5032
72
                name: "vkDestroyFramebuffer",
5033
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5034
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyFramebuffer),
5035
72
                proc: unsafe {
5036
72
                    std::mem::transmute::<vk::PFN_vkDestroyFramebuffer, vk::PFN_vkVoidFunction>(
5037
72
                        Self::destroy_framebuffer,
5038
72
                    )
5039
72
                },
5040
72
            },
5041
72
            VulkanCommand {
5042
72
                name: "vkDestroyImage",
5043
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5044
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyImage),
5045
72
                proc: unsafe {
5046
72
                    std::mem::transmute::<vk::PFN_vkDestroyImage, vk::PFN_vkVoidFunction>(
5047
72
                        Self::destroy_image,
5048
72
                    )
5049
72
                },
5050
72
            },
5051
72
            VulkanCommand {
5052
72
                name: "vkDestroyImageView",
5053
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5054
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyImageView),
5055
72
                proc: unsafe {
5056
72
                    std::mem::transmute::<vk::PFN_vkDestroyImageView, vk::PFN_vkVoidFunction>(
5057
72
                        Self::destroy_image_view,
5058
72
                    )
5059
72
                },
5060
72
            },
5061
72
            VulkanCommand {
5062
72
                name: "vkDestroyIndirectCommandsLayoutNV",
5063
72
                features: smallvec![
Feature::Extension(Extension::NVDeviceGeneratedCommands)0
],
5064
72
                hooked: hooked_commands
5065
72
                    .contains(&LayerVulkanCommand::DestroyIndirectCommandsLayoutNv),
5066
72
                proc: unsafe {
5067
72
                    std::mem::transmute::<
5068
72
                        vk::PFN_vkDestroyIndirectCommandsLayoutNV,
5069
72
                        vk::PFN_vkVoidFunction,
5070
72
                    >(Self::destroy_indirect_commands_layout_nv)
5071
72
                },
5072
72
            },
5073
72
            VulkanCommand {
5074
72
                name: "vkDestroyMicromapEXT",
5075
72
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
5076
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyMicromapExt),
5077
72
                proc: unsafe {
5078
72
                    std::mem::transmute::<vk::PFN_vkDestroyMicromapEXT, vk::PFN_vkVoidFunction>(
5079
72
                        Self::destroy_micromap_ext,
5080
72
                    )
5081
72
                },
5082
72
            },
5083
72
            VulkanCommand {
5084
72
                name: "vkDestroyOpticalFlowSessionNV",
5085
72
                features: smallvec![
Feature::Extension(Extension::NVOpticalFlow)0
],
5086
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyOpticalFlowSessionNv),
5087
72
                proc: unsafe {
5088
72
                    std::mem::transmute::<
5089
72
                        vk::PFN_vkDestroyOpticalFlowSessionNV,
5090
72
                        vk::PFN_vkVoidFunction,
5091
72
                    >(Self::destroy_optical_flow_session_nv)
5092
72
                },
5093
72
            },
5094
72
            VulkanCommand {
5095
72
                name: "vkDestroyPipeline",
5096
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5097
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyPipeline),
5098
72
                proc: unsafe {
5099
72
                    std::mem::transmute::<vk::PFN_vkDestroyPipeline, vk::PFN_vkVoidFunction>(
5100
72
                        Self::destroy_pipeline,
5101
72
                    )
5102
72
                },
5103
72
            },
5104
72
            VulkanCommand {
5105
72
                name: "vkDestroyPipelineCache",
5106
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5107
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyPipelineCache),
5108
72
                proc: unsafe {
5109
72
                    std::mem::transmute::<vk::PFN_vkDestroyPipelineCache, vk::PFN_vkVoidFunction>(
5110
72
                        Self::destroy_pipeline_cache,
5111
72
                    )
5112
72
                },
5113
72
            },
5114
72
            VulkanCommand {
5115
72
                name: "vkDestroyPipelineLayout",
5116
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5117
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyPipelineLayout),
5118
72
                proc: unsafe {
5119
72
                    std::mem::transmute::<vk::PFN_vkDestroyPipelineLayout, vk::PFN_vkVoidFunction>(
5120
72
                        Self::destroy_pipeline_layout,
5121
72
                    )
5122
72
                },
5123
72
            },
5124
72
            VulkanCommand {
5125
72
                name: "vkDestroyPrivateDataSlot",
5126
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
5127
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyPrivateDataSlot),
5128
72
                proc: unsafe {
5129
72
                    std::mem::transmute::<vk::PFN_vkDestroyPrivateDataSlot, vk::PFN_vkVoidFunction>(
5130
72
                        Self::destroy_private_data_slot,
5131
72
                    )
5132
72
                },
5133
72
            },
5134
72
            VulkanCommand {
5135
72
                name: "vkDestroyPrivateDataSlotEXT",
5136
72
                features: smallvec![
Feature::Extension(Extension::EXTPrivateData)0
],
5137
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyPrivateDataSlot),
5138
72
                proc: unsafe {
5139
72
                    std::mem::transmute::<vk::PFN_vkDestroyPrivateDataSlot, vk::PFN_vkVoidFunction>(
5140
72
                        Self::destroy_private_data_slot,
5141
72
                    )
5142
72
                },
5143
72
            },
5144
72
            VulkanCommand {
5145
72
                name: "vkDestroyQueryPool",
5146
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5147
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyQueryPool),
5148
72
                proc: unsafe {
5149
72
                    std::mem::transmute::<vk::PFN_vkDestroyQueryPool, vk::PFN_vkVoidFunction>(
5150
72
                        Self::destroy_query_pool,
5151
72
                    )
5152
72
                },
5153
72
            },
5154
72
            VulkanCommand {
5155
72
                name: "vkDestroyRenderPass",
5156
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5157
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyRenderPass),
5158
72
                proc: unsafe {
5159
72
                    std::mem::transmute::<vk::PFN_vkDestroyRenderPass, vk::PFN_vkVoidFunction>(
5160
72
                        Self::destroy_render_pass,
5161
72
                    )
5162
72
                },
5163
72
            },
5164
72
            VulkanCommand {
5165
72
                name: "vkDestroySampler",
5166
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5167
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroySampler),
5168
72
                proc: unsafe {
5169
72
                    std::mem::transmute::<vk::PFN_vkDestroySampler, vk::PFN_vkVoidFunction>(
5170
72
                        Self::destroy_sampler,
5171
72
                    )
5172
72
                },
5173
72
            },
5174
72
            VulkanCommand {
5175
72
                name: "vkDestroySamplerYcbcrConversion",
5176
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
5177
72
                hooked: hooked_commands
5178
72
                    .contains(&LayerVulkanCommand::DestroySamplerYcbcrConversion),
5179
72
                proc: unsafe {
5180
72
                    std::mem::transmute::<
5181
72
                        vk::PFN_vkDestroySamplerYcbcrConversion,
5182
72
                        vk::PFN_vkVoidFunction,
5183
72
                    >(Self::destroy_sampler_ycbcr_conversion)
5184
72
                },
5185
72
            },
5186
72
            VulkanCommand {
5187
72
                name: "vkDestroySamplerYcbcrConversionKHR",
5188
72
                features: smallvec![
Feature::Extension(Extension::KHRSamplerYcbcrConversion)0
],
5189
72
                hooked: hooked_commands
5190
72
                    .contains(&LayerVulkanCommand::DestroySamplerYcbcrConversion),
5191
72
                proc: unsafe {
5192
72
                    std::mem::transmute::<
5193
72
                        vk::PFN_vkDestroySamplerYcbcrConversion,
5194
72
                        vk::PFN_vkVoidFunction,
5195
72
                    >(Self::destroy_sampler_ycbcr_conversion)
5196
72
                },
5197
72
            },
5198
72
            VulkanCommand {
5199
72
                name: "vkDestroySemaphore",
5200
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5201
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroySemaphore),
5202
72
                proc: unsafe {
5203
72
                    std::mem::transmute::<vk::PFN_vkDestroySemaphore, vk::PFN_vkVoidFunction>(
5204
72
                        Self::destroy_semaphore,
5205
72
                    )
5206
72
                },
5207
72
            },
5208
72
            VulkanCommand {
5209
72
                name: "vkDestroyShaderModule",
5210
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5211
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyShaderModule),
5212
72
                proc: unsafe {
5213
72
                    std::mem::transmute::<vk::PFN_vkDestroyShaderModule, vk::PFN_vkVoidFunction>(
5214
72
                        Self::destroy_shader_module,
5215
72
                    )
5216
72
                },
5217
72
            },
5218
72
            VulkanCommand {
5219
72
                name: "vkDestroySwapchainKHR",
5220
72
                features: smallvec![
Feature::Extension(Extension::KHRSwapchain)0
],
5221
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroySwapchainKhr),
5222
72
                proc: unsafe {
5223
72
                    std::mem::transmute::<vk::PFN_vkDestroySwapchainKHR, vk::PFN_vkVoidFunction>(
5224
72
                        Self::destroy_swapchain_khr,
5225
72
                    )
5226
72
                },
5227
72
            },
5228
72
            VulkanCommand {
5229
72
                name: "vkDestroyValidationCacheEXT",
5230
72
                features: smallvec![
Feature::Extension(Extension::EXTValidationCache)0
],
5231
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyValidationCacheExt),
5232
72
                proc: unsafe {
5233
72
                    std::mem::transmute::<vk::PFN_vkDestroyValidationCacheEXT, vk::PFN_vkVoidFunction>(
5234
72
                        Self::destroy_validation_cache_ext,
5235
72
                    )
5236
72
                },
5237
72
            },
5238
72
            VulkanCommand {
5239
72
                name: "vkDestroyVideoSessionKHR",
5240
72
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
5241
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyVideoSessionKhr),
5242
72
                proc: unsafe {
5243
72
                    std::mem::transmute::<vk::PFN_vkDestroyVideoSessionKHR, vk::PFN_vkVoidFunction>(
5244
72
                        Self::destroy_video_session_khr,
5245
72
                    )
5246
72
                },
5247
72
            },
5248
72
            VulkanCommand {
5249
72
                name: "vkDestroyVideoSessionParametersKHR",
5250
72
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
5251
72
                hooked: hooked_commands
5252
72
                    .contains(&LayerVulkanCommand::DestroyVideoSessionParametersKhr),
5253
72
                proc: unsafe {
5254
72
                    std::mem::transmute::<
5255
72
                        vk::PFN_vkDestroyVideoSessionParametersKHR,
5256
72
                        vk::PFN_vkVoidFunction,
5257
72
                    >(Self::destroy_video_session_parameters_khr)
5258
72
                },
5259
72
            },
5260
72
            VulkanCommand {
5261
72
                name: "vkDeviceWaitIdle",
5262
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5263
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DeviceWaitIdle),
5264
72
                proc: unsafe {
5265
72
                    std::mem::transmute::<vk::PFN_vkDeviceWaitIdle, vk::PFN_vkVoidFunction>(
5266
72
                        Self::device_wait_idle,
5267
72
                    )
5268
72
                },
5269
72
            },
5270
72
            VulkanCommand {
5271
72
                name: "vkDisplayPowerControlEXT",
5272
72
                features: smallvec![
Feature::Extension(Extension::EXTDisplayControl)0
],
5273
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::DisplayPowerControlExt),
5274
72
                proc: unsafe {
5275
72
                    std::mem::transmute::<vk::PFN_vkDisplayPowerControlEXT, vk::PFN_vkVoidFunction>(
5276
72
                        Self::display_power_control_ext,
5277
72
                    )
5278
72
                },
5279
72
            },
5280
72
            VulkanCommand {
5281
72
                name: "vkEndCommandBuffer",
5282
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5283
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::EndCommandBuffer),
5284
72
                proc: unsafe {
5285
72
                    std::mem::transmute::<vk::PFN_vkEndCommandBuffer, vk::PFN_vkVoidFunction>(
5286
72
                        Self::end_command_buffer,
5287
72
                    )
5288
72
                },
5289
72
            },
5290
72
            VulkanCommand {
5291
72
                name: "vkExportMetalObjectsEXT",
5292
72
                features: smallvec![
Feature::Extension(Extension::EXTMetalObjects)0
],
5293
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::ExportMetalObjectsExt),
5294
72
                proc: unsafe {
5295
72
                    std::mem::transmute::<vk::PFN_vkExportMetalObjectsEXT, vk::PFN_vkVoidFunction>(
5296
72
                        Self::export_metal_objects_ext,
5297
72
                    )
5298
72
                },
5299
72
            },
5300
72
            VulkanCommand {
5301
72
                name: "vkFlushMappedMemoryRanges",
5302
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5303
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::FlushMappedMemoryRanges),
5304
72
                proc: unsafe {
5305
72
                    std::mem::transmute::<vk::PFN_vkFlushMappedMemoryRanges, vk::PFN_vkVoidFunction>(
5306
72
                        Self::flush_mapped_memory_ranges,
5307
72
                    )
5308
72
                },
5309
72
            },
5310
72
            VulkanCommand {
5311
72
                name: "vkFreeCommandBuffers",
5312
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5313
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::FreeCommandBuffers),
5314
72
                proc: unsafe {
5315
72
                    std::mem::transmute::<vk::PFN_vkFreeCommandBuffers, vk::PFN_vkVoidFunction>(
5316
72
                        Self::free_command_buffers,
5317
72
                    )
5318
72
                },
5319
72
            },
5320
72
            VulkanCommand {
5321
72
                name: "vkFreeDescriptorSets",
5322
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5323
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::FreeDescriptorSets),
5324
72
                proc: unsafe {
5325
72
                    std::mem::transmute::<vk::PFN_vkFreeDescriptorSets, vk::PFN_vkVoidFunction>(
5326
72
                        Self::free_descriptor_sets,
5327
72
                    )
5328
72
                },
5329
72
            },
5330
72
            VulkanCommand {
5331
72
                name: "vkFreeMemory",
5332
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5333
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::FreeMemory),
5334
72
                proc: unsafe {
5335
72
                    std::mem::transmute::<vk::PFN_vkFreeMemory, vk::PFN_vkVoidFunction>(
5336
72
                        Self::free_memory,
5337
72
                    )
5338
72
                },
5339
72
            },
5340
72
            VulkanCommand {
5341
72
                name: "vkGetAccelerationStructureBuildSizesKHR",
5342
72
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
5343
72
                hooked: hooked_commands
5344
72
                    .contains(&LayerVulkanCommand::GetAccelerationStructureBuildSizesKhr),
5345
72
                proc: unsafe {
5346
72
                    std::mem::transmute::<
5347
72
                        vk::PFN_vkGetAccelerationStructureBuildSizesKHR,
5348
72
                        vk::PFN_vkVoidFunction,
5349
72
                    >(Self::get_acceleration_structure_build_sizes_khr)
5350
72
                },
5351
72
            },
5352
72
            VulkanCommand {
5353
72
                name: "vkGetAccelerationStructureDeviceAddressKHR",
5354
72
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
5355
72
                hooked: hooked_commands
5356
72
                    .contains(&LayerVulkanCommand::GetAccelerationStructureDeviceAddressKhr),
5357
72
                proc: unsafe {
5358
72
                    std::mem::transmute::<
5359
72
                        vk::PFN_vkGetAccelerationStructureDeviceAddressKHR,
5360
72
                        vk::PFN_vkVoidFunction,
5361
72
                    >(Self::get_acceleration_structure_device_address_khr)
5362
72
                },
5363
72
            },
5364
72
            VulkanCommand {
5365
72
                name: "vkGetAccelerationStructureHandleNV",
5366
72
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
5367
72
                hooked: hooked_commands
5368
72
                    .contains(&LayerVulkanCommand::GetAccelerationStructureHandleNv),
5369
72
                proc: unsafe {
5370
72
                    std::mem::transmute::<
5371
72
                        vk::PFN_vkGetAccelerationStructureHandleNV,
5372
72
                        vk::PFN_vkVoidFunction,
5373
72
                    >(Self::get_acceleration_structure_handle_nv)
5374
72
                },
5375
72
            },
5376
72
            VulkanCommand {
5377
72
                name: "vkGetAccelerationStructureMemoryRequirementsNV",
5378
72
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
5379
72
                hooked: hooked_commands
5380
72
                    .contains(&LayerVulkanCommand::GetAccelerationStructureMemoryRequirementsNv),
5381
72
                proc: unsafe {
5382
72
                    std::mem::transmute::<
5383
72
                        vk::PFN_vkGetAccelerationStructureMemoryRequirementsNV,
5384
72
                        vk::PFN_vkVoidFunction,
5385
72
                    >(Self::get_acceleration_structure_memory_requirements_nv)
5386
72
                },
5387
72
            },
5388
72
            VulkanCommand {
5389
72
                name: "vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT",
5390
72
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
5391
72
                hooked: hooked_commands.contains(
5392
72
                    &LayerVulkanCommand::GetAccelerationStructureOpaqueCaptureDescriptorDataExt,
5393
72
                ),
5394
72
                proc: unsafe {
5395
72
                    std::mem::transmute::<
5396
72
                        vk::PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT,
5397
72
                        vk::PFN_vkVoidFunction,
5398
72
                    >(
5399
72
                        Self::get_acceleration_structure_opaque_capture_descriptor_data_ext
5400
72
                    )
5401
72
                },
5402
72
            },
5403
72
            VulkanCommand {
5404
72
                name: "vkGetAndroidHardwareBufferPropertiesANDROID",
5405
72
                features: smallvec![Feature::Extension(
5406
0
                    Extension::ANDROIDExternalMemoryAndroidHardwareBuffer
5407
0
                )],
5408
72
                hooked: hooked_commands
5409
72
                    .contains(&LayerVulkanCommand::GetAndroidHardwareBufferPropertiesAndroid),
5410
72
                proc: unsafe {
5411
72
                    std::mem::transmute::<
5412
72
                        vk::PFN_vkGetAndroidHardwareBufferPropertiesANDROID,
5413
72
                        vk::PFN_vkVoidFunction,
5414
72
                    >(Self::get_android_hardware_buffer_properties_android)
5415
72
                },
5416
72
            },
5417
72
            VulkanCommand {
5418
72
                name: "vkGetBufferCollectionPropertiesFUCHSIA",
5419
72
                features: smallvec![
Feature::Extension(Extension::FUCHSIABufferCollection)0
],
5420
72
                hooked: hooked_commands
5421
72
                    .contains(&LayerVulkanCommand::GetBufferCollectionPropertiesFuchsia),
5422
72
                proc: unsafe {
5423
72
                    std::mem::transmute::<
5424
72
                        vk::PFN_vkGetBufferCollectionPropertiesFUCHSIA,
5425
72
                        vk::PFN_vkVoidFunction,
5426
72
                    >(Self::get_buffer_collection_properties_fuchsia)
5427
72
                },
5428
72
            },
5429
72
            VulkanCommand {
5430
72
                name: "vkGetBufferDeviceAddress",
5431
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
5432
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetBufferDeviceAddress),
5433
72
                proc: unsafe {
5434
72
                    std::mem::transmute::<vk::PFN_vkGetBufferDeviceAddress, vk::PFN_vkVoidFunction>(
5435
72
                        Self::get_buffer_device_address,
5436
72
                    )
5437
72
                },
5438
72
            },
5439
72
            VulkanCommand {
5440
72
                name: "vkGetBufferDeviceAddressEXT",
5441
72
                features: smallvec![
Feature::Extension(Extension::EXTBufferDeviceAddress)0
],
5442
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetBufferDeviceAddress),
5443
72
                proc: unsafe {
5444
72
                    std::mem::transmute::<vk::PFN_vkGetBufferDeviceAddress, vk::PFN_vkVoidFunction>(
5445
72
                        Self::get_buffer_device_address,
5446
72
                    )
5447
72
                },
5448
72
            },
5449
72
            VulkanCommand {
5450
72
                name: "vkGetBufferDeviceAddressKHR",
5451
72
                features: smallvec![
Feature::Extension(Extension::KHRBufferDeviceAddress)0
],
5452
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetBufferDeviceAddress),
5453
72
                proc: unsafe {
5454
72
                    std::mem::transmute::<vk::PFN_vkGetBufferDeviceAddress, vk::PFN_vkVoidFunction>(
5455
72
                        Self::get_buffer_device_address,
5456
72
                    )
5457
72
                },
5458
72
            },
5459
72
            VulkanCommand {
5460
72
                name: "vkGetBufferMemoryRequirements",
5461
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5462
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetBufferMemoryRequirements),
5463
72
                proc: unsafe {
5464
72
                    std::mem::transmute::<
5465
72
                        vk::PFN_vkGetBufferMemoryRequirements,
5466
72
                        vk::PFN_vkVoidFunction,
5467
72
                    >(Self::get_buffer_memory_requirements)
5468
72
                },
5469
72
            },
5470
72
            VulkanCommand {
5471
72
                name: "vkGetBufferMemoryRequirements2",
5472
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
5473
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetBufferMemoryRequirements2),
5474
72
                proc: unsafe {
5475
72
                    std::mem::transmute::<
5476
72
                        vk::PFN_vkGetBufferMemoryRequirements2,
5477
72
                        vk::PFN_vkVoidFunction,
5478
72
                    >(Self::get_buffer_memory_requirements2)
5479
72
                },
5480
72
            },
5481
72
            VulkanCommand {
5482
72
                name: "vkGetBufferMemoryRequirements2KHR",
5483
72
                features: smallvec![
Feature::Extension(Extension::KHRGetMemoryRequirements2)0
],
5484
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetBufferMemoryRequirements2),
5485
72
                proc: unsafe {
5486
72
                    std::mem::transmute::<
5487
72
                        vk::PFN_vkGetBufferMemoryRequirements2,
5488
72
                        vk::PFN_vkVoidFunction,
5489
72
                    >(Self::get_buffer_memory_requirements2)
5490
72
                },
5491
72
            },
5492
72
            VulkanCommand {
5493
72
                name: "vkGetBufferOpaqueCaptureAddress",
5494
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
5495
72
                hooked: hooked_commands
5496
72
                    .contains(&LayerVulkanCommand::GetBufferOpaqueCaptureAddress),
5497
72
                proc: unsafe {
5498
72
                    std::mem::transmute::<
5499
72
                        vk::PFN_vkGetBufferOpaqueCaptureAddress,
5500
72
                        vk::PFN_vkVoidFunction,
5501
72
                    >(Self::get_buffer_opaque_capture_address)
5502
72
                },
5503
72
            },
5504
72
            VulkanCommand {
5505
72
                name: "vkGetBufferOpaqueCaptureAddressKHR",
5506
72
                features: smallvec![
Feature::Extension(Extension::KHRBufferDeviceAddress)0
],
5507
72
                hooked: hooked_commands
5508
72
                    .contains(&LayerVulkanCommand::GetBufferOpaqueCaptureAddress),
5509
72
                proc: unsafe {
5510
72
                    std::mem::transmute::<
5511
72
                        vk::PFN_vkGetBufferOpaqueCaptureAddress,
5512
72
                        vk::PFN_vkVoidFunction,
5513
72
                    >(Self::get_buffer_opaque_capture_address)
5514
72
                },
5515
72
            },
5516
72
            VulkanCommand {
5517
72
                name: "vkGetBufferOpaqueCaptureDescriptorDataEXT",
5518
72
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
5519
72
                hooked: hooked_commands
5520
72
                    .contains(&LayerVulkanCommand::GetBufferOpaqueCaptureDescriptorDataExt),
5521
72
                proc: unsafe {
5522
72
                    std::mem::transmute::<
5523
72
                        vk::PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT,
5524
72
                        vk::PFN_vkVoidFunction,
5525
72
                    >(Self::get_buffer_opaque_capture_descriptor_data_ext)
5526
72
                },
5527
72
            },
5528
72
            VulkanCommand {
5529
72
                name: "vkGetCalibratedTimestampsEXT",
5530
72
                features: smallvec![
Feature::Extension(Extension::EXTCalibratedTimestamps)0
],
5531
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetCalibratedTimestampsExt),
5532
72
                proc: unsafe {
5533
72
                    std::mem::transmute::<
5534
72
                        vk::PFN_vkGetCalibratedTimestampsEXT,
5535
72
                        vk::PFN_vkVoidFunction,
5536
72
                    >(Self::get_calibrated_timestamps_ext)
5537
72
                },
5538
72
            },
5539
72
            VulkanCommand {
5540
72
                name: "vkGetDeferredOperationMaxConcurrencyKHR",
5541
72
                features: smallvec![
Feature::Extension(Extension::KHRDeferredHostOperations)0
],
5542
72
                hooked: hooked_commands
5543
72
                    .contains(&LayerVulkanCommand::GetDeferredOperationMaxConcurrencyKhr),
5544
72
                proc: unsafe {
5545
72
                    std::mem::transmute::<
5546
72
                        vk::PFN_vkGetDeferredOperationMaxConcurrencyKHR,
5547
72
                        vk::PFN_vkVoidFunction,
5548
72
                    >(Self::get_deferred_operation_max_concurrency_khr)
5549
72
                },
5550
72
            },
5551
72
            VulkanCommand {
5552
72
                name: "vkGetDeferredOperationResultKHR",
5553
72
                features: smallvec![
Feature::Extension(Extension::KHRDeferredHostOperations)0
],
5554
72
                hooked: hooked_commands
5555
72
                    .contains(&LayerVulkanCommand::GetDeferredOperationResultKhr),
5556
72
                proc: unsafe {
5557
72
                    std::mem::transmute::<
5558
72
                        vk::PFN_vkGetDeferredOperationResultKHR,
5559
72
                        vk::PFN_vkVoidFunction,
5560
72
                    >(Self::get_deferred_operation_result_khr)
5561
72
                },
5562
72
            },
5563
72
            VulkanCommand {
5564
72
                name: "vkGetDescriptorEXT",
5565
72
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
5566
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDescriptorExt),
5567
72
                proc: unsafe {
5568
72
                    std::mem::transmute::<vk::PFN_vkGetDescriptorEXT, vk::PFN_vkVoidFunction>(
5569
72
                        Self::get_descriptor_ext,
5570
72
                    )
5571
72
                },
5572
72
            },
5573
72
            VulkanCommand {
5574
72
                name: "vkGetDescriptorSetHostMappingVALVE",
5575
72
                features: smallvec![
Feature::Extension(Extension::VALVEDescriptorSetHostMapping)0
],
5576
72
                hooked: hooked_commands
5577
72
                    .contains(&LayerVulkanCommand::GetDescriptorSetHostMappingValve),
5578
72
                proc: unsafe {
5579
72
                    std::mem::transmute::<
5580
72
                        vk::PFN_vkGetDescriptorSetHostMappingVALVE,
5581
72
                        vk::PFN_vkVoidFunction,
5582
72
                    >(Self::get_descriptor_set_host_mapping_valve)
5583
72
                },
5584
72
            },
5585
72
            VulkanCommand {
5586
72
                name: "vkGetDescriptorSetLayoutBindingOffsetEXT",
5587
72
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
5588
72
                hooked: hooked_commands
5589
72
                    .contains(&LayerVulkanCommand::GetDescriptorSetLayoutBindingOffsetExt),
5590
72
                proc: unsafe {
5591
72
                    std::mem::transmute::<
5592
72
                        vk::PFN_vkGetDescriptorSetLayoutBindingOffsetEXT,
5593
72
                        vk::PFN_vkVoidFunction,
5594
72
                    >(Self::get_descriptor_set_layout_binding_offset_ext)
5595
72
                },
5596
72
            },
5597
72
            VulkanCommand {
5598
72
                name: "vkGetDescriptorSetLayoutHostMappingInfoVALVE",
5599
72
                features: smallvec![
Feature::Extension(Extension::VALVEDescriptorSetHostMapping)0
],
5600
72
                hooked: hooked_commands
5601
72
                    .contains(&LayerVulkanCommand::GetDescriptorSetLayoutHostMappingInfoValve),
5602
72
                proc: unsafe {
5603
72
                    std::mem::transmute::<
5604
72
                        vk::PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE,
5605
72
                        vk::PFN_vkVoidFunction,
5606
72
                    >(Self::get_descriptor_set_layout_host_mapping_info_valve)
5607
72
                },
5608
72
            },
5609
72
            VulkanCommand {
5610
72
                name: "vkGetDescriptorSetLayoutSizeEXT",
5611
72
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
5612
72
                hooked: hooked_commands
5613
72
                    .contains(&LayerVulkanCommand::GetDescriptorSetLayoutSizeExt),
5614
72
                proc: unsafe {
5615
72
                    std::mem::transmute::<
5616
72
                        vk::PFN_vkGetDescriptorSetLayoutSizeEXT,
5617
72
                        vk::PFN_vkVoidFunction,
5618
72
                    >(Self::get_descriptor_set_layout_size_ext)
5619
72
                },
5620
72
            },
5621
72
            VulkanCommand {
5622
72
                name: "vkGetDescriptorSetLayoutSupport",
5623
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
5624
72
                hooked: hooked_commands
5625
72
                    .contains(&LayerVulkanCommand::GetDescriptorSetLayoutSupport),
5626
72
                proc: unsafe {
5627
72
                    std::mem::transmute::<
5628
72
                        vk::PFN_vkGetDescriptorSetLayoutSupport,
5629
72
                        vk::PFN_vkVoidFunction,
5630
72
                    >(Self::get_descriptor_set_layout_support)
5631
72
                },
5632
72
            },
5633
72
            VulkanCommand {
5634
72
                name: "vkGetDescriptorSetLayoutSupportKHR",
5635
72
                features: smallvec![
Feature::Extension(Extension::KHRMaintenance3)0
],
5636
72
                hooked: hooked_commands
5637
72
                    .contains(&LayerVulkanCommand::GetDescriptorSetLayoutSupport),
5638
72
                proc: unsafe {
5639
72
                    std::mem::transmute::<
5640
72
                        vk::PFN_vkGetDescriptorSetLayoutSupport,
5641
72
                        vk::PFN_vkVoidFunction,
5642
72
                    >(Self::get_descriptor_set_layout_support)
5643
72
                },
5644
72
            },
5645
72
            VulkanCommand {
5646
72
                name: "vkGetDeviceAccelerationStructureCompatibilityKHR",
5647
72
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
5648
72
                hooked: hooked_commands
5649
72
                    .contains(&LayerVulkanCommand::GetDeviceAccelerationStructureCompatibilityKhr),
5650
72
                proc: unsafe {
5651
72
                    std::mem::transmute::<
5652
72
                        vk::PFN_vkGetDeviceAccelerationStructureCompatibilityKHR,
5653
72
                        vk::PFN_vkVoidFunction,
5654
72
                    >(Self::get_device_acceleration_structure_compatibility_khr)
5655
72
                },
5656
72
            },
5657
72
            VulkanCommand {
5658
72
                name: "vkGetDeviceBufferMemoryRequirements",
5659
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
5660
72
                hooked: hooked_commands
5661
72
                    .contains(&LayerVulkanCommand::GetDeviceBufferMemoryRequirements),
5662
72
                proc: unsafe {
5663
72
                    std::mem::transmute::<
5664
72
                        vk::PFN_vkGetDeviceBufferMemoryRequirements,
5665
72
                        vk::PFN_vkVoidFunction,
5666
72
                    >(Self::get_device_buffer_memory_requirements)
5667
72
                },
5668
72
            },
5669
72
            VulkanCommand {
5670
72
                name: "vkGetDeviceBufferMemoryRequirementsKHR",
5671
72
                features: smallvec![
Feature::Extension(Extension::KHRMaintenance4)0
],
5672
72
                hooked: hooked_commands
5673
72
                    .contains(&LayerVulkanCommand::GetDeviceBufferMemoryRequirements),
5674
72
                proc: unsafe {
5675
72
                    std::mem::transmute::<
5676
72
                        vk::PFN_vkGetDeviceBufferMemoryRequirements,
5677
72
                        vk::PFN_vkVoidFunction,
5678
72
                    >(Self::get_device_buffer_memory_requirements)
5679
72
                },
5680
72
            },
5681
72
            VulkanCommand {
5682
72
                name: "vkGetDeviceGroupPeerMemoryFeatures",
5683
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
5684
72
                hooked: hooked_commands
5685
72
                    .contains(&LayerVulkanCommand::GetDeviceGroupPeerMemoryFeatures),
5686
72
                proc: unsafe {
5687
72
                    std::mem::transmute::<
5688
72
                        vk::PFN_vkGetDeviceGroupPeerMemoryFeatures,
5689
72
                        vk::PFN_vkVoidFunction,
5690
72
                    >(Self::get_device_group_peer_memory_features)
5691
72
                },
5692
72
            },
5693
72
            VulkanCommand {
5694
72
                name: "vkGetDeviceGroupPeerMemoryFeaturesKHR",
5695
72
                features: smallvec![
Feature::Extension(Extension::KHRDeviceGroup)0
],
5696
72
                hooked: hooked_commands
5697
72
                    .contains(&LayerVulkanCommand::GetDeviceGroupPeerMemoryFeatures),
5698
72
                proc: unsafe {
5699
72
                    std::mem::transmute::<
5700
72
                        vk::PFN_vkGetDeviceGroupPeerMemoryFeatures,
5701
72
                        vk::PFN_vkVoidFunction,
5702
72
                    >(Self::get_device_group_peer_memory_features)
5703
72
                },
5704
72
            },
5705
72
            VulkanCommand {
5706
72
                name: "vkGetDeviceGroupPresentCapabilitiesKHR",
5707
72
                features: smallvec![
5708
0
                    Feature::Extension(Extension::KHRSwapchain),
5709
0
                    Feature::Extension(Extension::KHRDeviceGroup)
5710
                ],
5711
72
                hooked: hooked_commands
5712
72
                    .contains(&LayerVulkanCommand::GetDeviceGroupPresentCapabilitiesKhr),
5713
72
                proc: unsafe {
5714
72
                    std::mem::transmute::<
5715
72
                        vk::PFN_vkGetDeviceGroupPresentCapabilitiesKHR,
5716
72
                        vk::PFN_vkVoidFunction,
5717
72
                    >(Self::get_device_group_present_capabilities_khr)
5718
72
                },
5719
72
            },
5720
72
            VulkanCommand {
5721
72
                name: "vkGetDeviceGroupSurfacePresentModes2EXT",
5722
72
                features: smallvec![
Feature::Extension(Extension::EXTFullScreenExclusive)0
],
5723
72
                hooked: hooked_commands
5724
72
                    .contains(&LayerVulkanCommand::GetDeviceGroupSurfacePresentModes2Ext),
5725
72
                proc: unsafe {
5726
72
                    std::mem::transmute::<
5727
72
                        vk::PFN_vkGetDeviceGroupSurfacePresentModes2EXT,
5728
72
                        vk::PFN_vkVoidFunction,
5729
72
                    >(Self::get_device_group_surface_present_modes2_ext)
5730
72
                },
5731
72
            },
5732
72
            VulkanCommand {
5733
72
                name: "vkGetDeviceGroupSurfacePresentModesKHR",
5734
72
                features: smallvec![
5735
0
                    Feature::Extension(Extension::KHRSwapchain),
5736
0
                    Feature::Extension(Extension::KHRDeviceGroup)
5737
                ],
5738
72
                hooked: hooked_commands
5739
72
                    .contains(&LayerVulkanCommand::GetDeviceGroupSurfacePresentModesKhr),
5740
72
                proc: unsafe {
5741
72
                    std::mem::transmute::<
5742
72
                        vk::PFN_vkGetDeviceGroupSurfacePresentModesKHR,
5743
72
                        vk::PFN_vkVoidFunction,
5744
72
                    >(Self::get_device_group_surface_present_modes_khr)
5745
72
                },
5746
72
            },
5747
72
            VulkanCommand {
5748
72
                name: "vkGetDeviceImageMemoryRequirements",
5749
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
5750
72
                hooked: hooked_commands
5751
72
                    .contains(&LayerVulkanCommand::GetDeviceImageMemoryRequirements),
5752
72
                proc: unsafe {
5753
72
                    std::mem::transmute::<
5754
72
                        vk::PFN_vkGetDeviceImageMemoryRequirements,
5755
72
                        vk::PFN_vkVoidFunction,
5756
72
                    >(Self::get_device_image_memory_requirements)
5757
72
                },
5758
72
            },
5759
72
            VulkanCommand {
5760
72
                name: "vkGetDeviceImageMemoryRequirementsKHR",
5761
72
                features: smallvec![
Feature::Extension(Extension::KHRMaintenance4)0
],
5762
72
                hooked: hooked_commands
5763
72
                    .contains(&LayerVulkanCommand::GetDeviceImageMemoryRequirements),
5764
72
                proc: unsafe {
5765
72
                    std::mem::transmute::<
5766
72
                        vk::PFN_vkGetDeviceImageMemoryRequirements,
5767
72
                        vk::PFN_vkVoidFunction,
5768
72
                    >(Self::get_device_image_memory_requirements)
5769
72
                },
5770
72
            },
5771
72
            VulkanCommand {
5772
72
                name: "vkGetDeviceImageSparseMemoryRequirements",
5773
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
5774
72
                hooked: hooked_commands
5775
72
                    .contains(&LayerVulkanCommand::GetDeviceImageSparseMemoryRequirements),
5776
72
                proc: unsafe {
5777
72
                    std::mem::transmute::<
5778
72
                        vk::PFN_vkGetDeviceImageSparseMemoryRequirements,
5779
72
                        vk::PFN_vkVoidFunction,
5780
72
                    >(Self::get_device_image_sparse_memory_requirements)
5781
72
                },
5782
72
            },
5783
72
            VulkanCommand {
5784
72
                name: "vkGetDeviceImageSparseMemoryRequirementsKHR",
5785
72
                features: smallvec![
Feature::Extension(Extension::KHRMaintenance4)0
],
5786
72
                hooked: hooked_commands
5787
72
                    .contains(&LayerVulkanCommand::GetDeviceImageSparseMemoryRequirements),
5788
72
                proc: unsafe {
5789
72
                    std::mem::transmute::<
5790
72
                        vk::PFN_vkGetDeviceImageSparseMemoryRequirements,
5791
72
                        vk::PFN_vkVoidFunction,
5792
72
                    >(Self::get_device_image_sparse_memory_requirements)
5793
72
                },
5794
72
            },
5795
72
            VulkanCommand {
5796
72
                name: "vkGetDeviceMemoryCommitment",
5797
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5798
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDeviceMemoryCommitment),
5799
72
                proc: unsafe {
5800
72
                    std::mem::transmute::<vk::PFN_vkGetDeviceMemoryCommitment, vk::PFN_vkVoidFunction>(
5801
72
                        Self::get_device_memory_commitment,
5802
72
                    )
5803
72
                },
5804
72
            },
5805
72
            VulkanCommand {
5806
72
                name: "vkGetDeviceMemoryOpaqueCaptureAddress",
5807
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
5808
72
                hooked: hooked_commands
5809
72
                    .contains(&LayerVulkanCommand::GetDeviceMemoryOpaqueCaptureAddress),
5810
72
                proc: unsafe {
5811
72
                    std::mem::transmute::<
5812
72
                        vk::PFN_vkGetDeviceMemoryOpaqueCaptureAddress,
5813
72
                        vk::PFN_vkVoidFunction,
5814
72
                    >(Self::get_device_memory_opaque_capture_address)
5815
72
                },
5816
72
            },
5817
72
            VulkanCommand {
5818
72
                name: "vkGetDeviceMemoryOpaqueCaptureAddressKHR",
5819
72
                features: smallvec![
Feature::Extension(Extension::KHRBufferDeviceAddress)0
],
5820
72
                hooked: hooked_commands
5821
72
                    .contains(&LayerVulkanCommand::GetDeviceMemoryOpaqueCaptureAddress),
5822
72
                proc: unsafe {
5823
72
                    std::mem::transmute::<
5824
72
                        vk::PFN_vkGetDeviceMemoryOpaqueCaptureAddress,
5825
72
                        vk::PFN_vkVoidFunction,
5826
72
                    >(Self::get_device_memory_opaque_capture_address)
5827
72
                },
5828
72
            },
5829
72
            VulkanCommand {
5830
72
                name: "vkGetDeviceMicromapCompatibilityEXT",
5831
72
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
5832
72
                hooked: hooked_commands
5833
72
                    .contains(&LayerVulkanCommand::GetDeviceMicromapCompatibilityExt),
5834
72
                proc: unsafe {
5835
72
                    std::mem::transmute::<
5836
72
                        vk::PFN_vkGetDeviceMicromapCompatibilityEXT,
5837
72
                        vk::PFN_vkVoidFunction,
5838
72
                    >(Self::get_device_micromap_compatibility_ext)
5839
72
                },
5840
72
            },
5841
72
            VulkanCommand {
5842
72
                name: "vkGetDeviceProcAddr",
5843
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5844
                hooked: true,
5845
                proc: unsafe {
5846
72
                    std::mem::transmute::<vk::PFN_vkGetDeviceProcAddr, vk::PFN_vkVoidFunction>(
5847
72
                        Self::get_device_proc_addr,
5848
72
                    )
5849
72
                },
5850
72
            },
5851
72
            VulkanCommand {
5852
72
                name: "vkGetDeviceQueue",
5853
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5854
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDeviceQueue),
5855
72
                proc: unsafe {
5856
72
                    std::mem::transmute::<vk::PFN_vkGetDeviceQueue, vk::PFN_vkVoidFunction>(
5857
72
                        Self::get_device_queue,
5858
72
                    )
5859
72
                },
5860
72
            },
5861
72
            VulkanCommand {
5862
72
                name: "vkGetDeviceQueue2",
5863
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
5864
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDeviceQueue2),
5865
72
                proc: unsafe {
5866
72
                    std::mem::transmute::<vk::PFN_vkGetDeviceQueue2, vk::PFN_vkVoidFunction>(
5867
72
                        Self::get_device_queue2,
5868
72
                    )
5869
72
                },
5870
72
            },
5871
72
            VulkanCommand {
5872
72
                name: "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI",
5873
72
                features: smallvec![
Feature::Extension(Extension::HUAWEISubpassShading)0
],
5874
72
                hooked: hooked_commands
5875
72
                    .contains(&LayerVulkanCommand::GetDeviceSubpassShadingMaxWorkgroupSizeHuawei),
5876
72
                proc: unsafe {
5877
72
                    std::mem::transmute::<
5878
72
                        vk::PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI,
5879
72
                        vk::PFN_vkVoidFunction,
5880
72
                    >(Self::get_device_subpass_shading_max_workgroup_size_huawei)
5881
72
                },
5882
72
            },
5883
72
            VulkanCommand {
5884
72
                name: "vkGetDynamicRenderingTilePropertiesQCOM",
5885
72
                features: smallvec![
Feature::Extension(Extension::QCOMTileProperties)0
],
5886
72
                hooked: hooked_commands
5887
72
                    .contains(&LayerVulkanCommand::GetDynamicRenderingTilePropertiesQcom),
5888
72
                proc: unsafe {
5889
72
                    std::mem::transmute::<
5890
72
                        vk::PFN_vkGetDynamicRenderingTilePropertiesQCOM,
5891
72
                        vk::PFN_vkVoidFunction,
5892
72
                    >(Self::get_dynamic_rendering_tile_properties_qcom)
5893
72
                },
5894
72
            },
5895
72
            VulkanCommand {
5896
72
                name: "vkGetEventStatus",
5897
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5898
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetEventStatus),
5899
72
                proc: unsafe {
5900
72
                    std::mem::transmute::<vk::PFN_vkGetEventStatus, vk::PFN_vkVoidFunction>(
5901
72
                        Self::get_event_status,
5902
72
                    )
5903
72
                },
5904
72
            },
5905
72
            VulkanCommand {
5906
72
                name: "vkGetFenceFdKHR",
5907
72
                features: smallvec![
Feature::Extension(Extension::KHRExternalFenceFd)0
],
5908
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetFenceFdKhr),
5909
72
                proc: unsafe {
5910
72
                    std::mem::transmute::<vk::PFN_vkGetFenceFdKHR, vk::PFN_vkVoidFunction>(
5911
72
                        Self::get_fence_fd_khr,
5912
72
                    )
5913
72
                },
5914
72
            },
5915
72
            VulkanCommand {
5916
72
                name: "vkGetFenceStatus",
5917
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5918
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetFenceStatus),
5919
72
                proc: unsafe {
5920
72
                    std::mem::transmute::<vk::PFN_vkGetFenceStatus, vk::PFN_vkVoidFunction>(
5921
72
                        Self::get_fence_status,
5922
72
                    )
5923
72
                },
5924
72
            },
5925
72
            VulkanCommand {
5926
72
                name: "vkGetFenceWin32HandleKHR",
5927
72
                features: smallvec![
Feature::Extension(Extension::KHRExternalFenceWin32)0
],
5928
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetFenceWin32HandleKhr),
5929
72
                proc: unsafe {
5930
72
                    std::mem::transmute::<vk::PFN_vkGetFenceWin32HandleKHR, vk::PFN_vkVoidFunction>(
5931
72
                        Self::get_fence_win32_handle_khr,
5932
72
                    )
5933
72
                },
5934
72
            },
5935
72
            VulkanCommand {
5936
72
                name: "vkGetFramebufferTilePropertiesQCOM",
5937
72
                features: smallvec![
Feature::Extension(Extension::QCOMTileProperties)0
],
5938
72
                hooked: hooked_commands
5939
72
                    .contains(&LayerVulkanCommand::GetFramebufferTilePropertiesQcom),
5940
72
                proc: unsafe {
5941
72
                    std::mem::transmute::<
5942
72
                        vk::PFN_vkGetFramebufferTilePropertiesQCOM,
5943
72
                        vk::PFN_vkVoidFunction,
5944
72
                    >(Self::get_framebuffer_tile_properties_qcom)
5945
72
                },
5946
72
            },
5947
72
            VulkanCommand {
5948
72
                name: "vkGetGeneratedCommandsMemoryRequirementsNV",
5949
72
                features: smallvec![
Feature::Extension(Extension::NVDeviceGeneratedCommands)0
],
5950
72
                hooked: hooked_commands
5951
72
                    .contains(&LayerVulkanCommand::GetGeneratedCommandsMemoryRequirementsNv),
5952
72
                proc: unsafe {
5953
72
                    std::mem::transmute::<
5954
72
                        vk::PFN_vkGetGeneratedCommandsMemoryRequirementsNV,
5955
72
                        vk::PFN_vkVoidFunction,
5956
72
                    >(Self::get_generated_commands_memory_requirements_nv)
5957
72
                },
5958
72
            },
5959
72
            VulkanCommand {
5960
72
                name: "vkGetImageDrmFormatModifierPropertiesEXT",
5961
72
                features: smallvec![
Feature::Extension(Extension::EXTImageDrmFormatModifier)0
],
5962
72
                hooked: hooked_commands
5963
72
                    .contains(&LayerVulkanCommand::GetImageDrmFormatModifierPropertiesExt),
5964
72
                proc: unsafe {
5965
72
                    std::mem::transmute::<
5966
72
                        vk::PFN_vkGetImageDrmFormatModifierPropertiesEXT,
5967
72
                        vk::PFN_vkVoidFunction,
5968
72
                    >(Self::get_image_drm_format_modifier_properties_ext)
5969
72
                },
5970
72
            },
5971
72
            VulkanCommand {
5972
72
                name: "vkGetImageMemoryRequirements",
5973
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5974
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetImageMemoryRequirements),
5975
72
                proc: unsafe {
5976
72
                    std::mem::transmute::<
5977
72
                        vk::PFN_vkGetImageMemoryRequirements,
5978
72
                        vk::PFN_vkVoidFunction,
5979
72
                    >(Self::get_image_memory_requirements)
5980
72
                },
5981
72
            },
5982
72
            VulkanCommand {
5983
72
                name: "vkGetImageMemoryRequirements2",
5984
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
5985
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetImageMemoryRequirements2),
5986
72
                proc: unsafe {
5987
72
                    std::mem::transmute::<
5988
72
                        vk::PFN_vkGetImageMemoryRequirements2,
5989
72
                        vk::PFN_vkVoidFunction,
5990
72
                    >(Self::get_image_memory_requirements2)
5991
72
                },
5992
72
            },
5993
72
            VulkanCommand {
5994
72
                name: "vkGetImageMemoryRequirements2KHR",
5995
72
                features: smallvec![
Feature::Extension(Extension::KHRGetMemoryRequirements2)0
],
5996
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetImageMemoryRequirements2),
5997
72
                proc: unsafe {
5998
72
                    std::mem::transmute::<
5999
72
                        vk::PFN_vkGetImageMemoryRequirements2,
6000
72
                        vk::PFN_vkVoidFunction,
6001
72
                    >(Self::get_image_memory_requirements2)
6002
72
                },
6003
72
            },
6004
72
            VulkanCommand {
6005
72
                name: "vkGetImageOpaqueCaptureDescriptorDataEXT",
6006
72
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
6007
72
                hooked: hooked_commands
6008
72
                    .contains(&LayerVulkanCommand::GetImageOpaqueCaptureDescriptorDataExt),
6009
72
                proc: unsafe {
6010
72
                    std::mem::transmute::<
6011
72
                        vk::PFN_vkGetImageOpaqueCaptureDescriptorDataEXT,
6012
72
                        vk::PFN_vkVoidFunction,
6013
72
                    >(Self::get_image_opaque_capture_descriptor_data_ext)
6014
72
                },
6015
72
            },
6016
72
            VulkanCommand {
6017
72
                name: "vkGetImageSparseMemoryRequirements",
6018
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6019
72
                hooked: hooked_commands
6020
72
                    .contains(&LayerVulkanCommand::GetImageSparseMemoryRequirements),
6021
72
                proc: unsafe {
6022
72
                    std::mem::transmute::<
6023
72
                        vk::PFN_vkGetImageSparseMemoryRequirements,
6024
72
                        vk::PFN_vkVoidFunction,
6025
72
                    >(Self::get_image_sparse_memory_requirements)
6026
72
                },
6027
72
            },
6028
72
            VulkanCommand {
6029
72
                name: "vkGetImageSparseMemoryRequirements2",
6030
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
6031
72
                hooked: hooked_commands
6032
72
                    .contains(&LayerVulkanCommand::GetImageSparseMemoryRequirements2),
6033
72
                proc: unsafe {
6034
72
                    std::mem::transmute::<
6035
72
                        vk::PFN_vkGetImageSparseMemoryRequirements2,
6036
72
                        vk::PFN_vkVoidFunction,
6037
72
                    >(Self::get_image_sparse_memory_requirements2)
6038
72
                },
6039
72
            },
6040
72
            VulkanCommand {
6041
72
                name: "vkGetImageSparseMemoryRequirements2KHR",
6042
72
                features: smallvec![
Feature::Extension(Extension::KHRGetMemoryRequirements2)0
],
6043
72
                hooked: hooked_commands
6044
72
                    .contains(&LayerVulkanCommand::GetImageSparseMemoryRequirements2),
6045
72
                proc: unsafe {
6046
72
                    std::mem::transmute::<
6047
72
                        vk::PFN_vkGetImageSparseMemoryRequirements2,
6048
72
                        vk::PFN_vkVoidFunction,
6049
72
                    >(Self::get_image_sparse_memory_requirements2)
6050
72
                },
6051
72
            },
6052
72
            VulkanCommand {
6053
72
                name: "vkGetImageSubresourceLayout",
6054
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6055
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetImageSubresourceLayout),
6056
72
                proc: unsafe {
6057
72
                    std::mem::transmute::<vk::PFN_vkGetImageSubresourceLayout, vk::PFN_vkVoidFunction>(
6058
72
                        Self::get_image_subresource_layout,
6059
72
                    )
6060
72
                },
6061
72
            },
6062
72
            VulkanCommand {
6063
72
                name: "vkGetImageSubresourceLayout2EXT",
6064
72
                features: smallvec![
Feature::Extension(Extension::EXTImageCompressionControl)0
],
6065
72
                hooked: hooked_commands
6066
72
                    .contains(&LayerVulkanCommand::GetImageSubresourceLayout2Ext),
6067
72
                proc: unsafe {
6068
72
                    std::mem::transmute::<
6069
72
                        vk::PFN_vkGetImageSubresourceLayout2EXT,
6070
72
                        vk::PFN_vkVoidFunction,
6071
72
                    >(Self::get_image_subresource_layout2_ext)
6072
72
                },
6073
72
            },
6074
72
            VulkanCommand {
6075
72
                name: "vkGetImageViewAddressNVX",
6076
72
                features: smallvec![
Feature::Extension(Extension::NVXImageViewHandle)0
],
6077
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetImageViewAddressNvx),
6078
72
                proc: unsafe {
6079
72
                    std::mem::transmute::<vk::PFN_vkGetImageViewAddressNVX, vk::PFN_vkVoidFunction>(
6080
72
                        Self::get_image_view_address_nvx,
6081
72
                    )
6082
72
                },
6083
72
            },
6084
72
            VulkanCommand {
6085
72
                name: "vkGetImageViewHandleNVX",
6086
72
                features: smallvec![
Feature::Extension(Extension::NVXImageViewHandle)0
],
6087
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetImageViewHandleNvx),
6088
72
                proc: unsafe {
6089
72
                    std::mem::transmute::<vk::PFN_vkGetImageViewHandleNVX, vk::PFN_vkVoidFunction>(
6090
72
                        Self::get_image_view_handle_nvx,
6091
72
                    )
6092
72
                },
6093
72
            },
6094
72
            VulkanCommand {
6095
72
                name: "vkGetImageViewOpaqueCaptureDescriptorDataEXT",
6096
72
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
6097
72
                hooked: hooked_commands
6098
72
                    .contains(&LayerVulkanCommand::GetImageViewOpaqueCaptureDescriptorDataExt),
6099
72
                proc: unsafe {
6100
72
                    std::mem::transmute::<
6101
72
                        vk::PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT,
6102
72
                        vk::PFN_vkVoidFunction,
6103
72
                    >(Self::get_image_view_opaque_capture_descriptor_data_ext)
6104
72
                },
6105
72
            },
6106
72
            VulkanCommand {
6107
72
                name: "vkGetMemoryAndroidHardwareBufferANDROID",
6108
72
                features: smallvec![Feature::Extension(
6109
0
                    Extension::ANDROIDExternalMemoryAndroidHardwareBuffer
6110
0
                )],
6111
72
                hooked: hooked_commands
6112
72
                    .contains(&LayerVulkanCommand::GetMemoryAndroidHardwareBufferAndroid),
6113
72
                proc: unsafe {
6114
72
                    std::mem::transmute::<
6115
72
                        vk::PFN_vkGetMemoryAndroidHardwareBufferANDROID,
6116
72
                        vk::PFN_vkVoidFunction,
6117
72
                    >(Self::get_memory_android_hardware_buffer_android)
6118
72
                },
6119
72
            },
6120
72
            VulkanCommand {
6121
72
                name: "vkGetMemoryFdKHR",
6122
72
                features: smallvec![
Feature::Extension(Extension::KHRExternalMemoryFd)0
],
6123
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetMemoryFdKhr),
6124
72
                proc: unsafe {
6125
72
                    std::mem::transmute::<vk::PFN_vkGetMemoryFdKHR, vk::PFN_vkVoidFunction>(
6126
72
                        Self::get_memory_fd_khr,
6127
72
                    )
6128
72
                },
6129
72
            },
6130
72
            VulkanCommand {
6131
72
                name: "vkGetMemoryFdPropertiesKHR",
6132
72
                features: smallvec![
Feature::Extension(Extension::KHRExternalMemoryFd)0
],
6133
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetMemoryFdPropertiesKhr),
6134
72
                proc: unsafe {
6135
72
                    std::mem::transmute::<vk::PFN_vkGetMemoryFdPropertiesKHR, vk::PFN_vkVoidFunction>(
6136
72
                        Self::get_memory_fd_properties_khr,
6137
72
                    )
6138
72
                },
6139
72
            },
6140
72
            VulkanCommand {
6141
72
                name: "vkGetMemoryHostPointerPropertiesEXT",
6142
72
                features: smallvec![
Feature::Extension(Extension::EXTExternalMemoryHost)0
],
6143
72
                hooked: hooked_commands
6144
72
                    .contains(&LayerVulkanCommand::GetMemoryHostPointerPropertiesExt),
6145
72
                proc: unsafe {
6146
72
                    std::mem::transmute::<
6147
72
                        vk::PFN_vkGetMemoryHostPointerPropertiesEXT,
6148
72
                        vk::PFN_vkVoidFunction,
6149
72
                    >(Self::get_memory_host_pointer_properties_ext)
6150
72
                },
6151
72
            },
6152
72
            VulkanCommand {
6153
72
                name: "vkGetMemoryRemoteAddressNV",
6154
72
                features: smallvec![
Feature::Extension(Extension::NVExternalMemoryRdma)0
],
6155
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetMemoryRemoteAddressNv),
6156
72
                proc: unsafe {
6157
72
                    std::mem::transmute::<vk::PFN_vkGetMemoryRemoteAddressNV, vk::PFN_vkVoidFunction>(
6158
72
                        Self::get_memory_remote_address_nv,
6159
72
                    )
6160
72
                },
6161
72
            },
6162
72
            VulkanCommand {
6163
72
                name: "vkGetMemoryWin32HandleKHR",
6164
72
                features: smallvec![
Feature::Extension(Extension::KHRExternalMemoryWin32)0
],
6165
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetMemoryWin32HandleKhr),
6166
72
                proc: unsafe {
6167
72
                    std::mem::transmute::<vk::PFN_vkGetMemoryWin32HandleKHR, vk::PFN_vkVoidFunction>(
6168
72
                        Self::get_memory_win32_handle_khr,
6169
72
                    )
6170
72
                },
6171
72
            },
6172
72
            VulkanCommand {
6173
72
                name: "vkGetMemoryWin32HandleNV",
6174
72
                features: smallvec![
Feature::Extension(Extension::NVExternalMemoryWin32)0
],
6175
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetMemoryWin32HandleNv),
6176
72
                proc: unsafe {
6177
72
                    std::mem::transmute::<vk::PFN_vkGetMemoryWin32HandleNV, vk::PFN_vkVoidFunction>(
6178
72
                        Self::get_memory_win32_handle_nv,
6179
72
                    )
6180
72
                },
6181
72
            },
6182
72
            VulkanCommand {
6183
72
                name: "vkGetMemoryWin32HandlePropertiesKHR",
6184
72
                features: smallvec![
Feature::Extension(Extension::KHRExternalMemoryWin32)0
],
6185
72
                hooked: hooked_commands
6186
72
                    .contains(&LayerVulkanCommand::GetMemoryWin32HandlePropertiesKhr),
6187
72
                proc: unsafe {
6188
72
                    std::mem::transmute::<
6189
72
                        vk::PFN_vkGetMemoryWin32HandlePropertiesKHR,
6190
72
                        vk::PFN_vkVoidFunction,
6191
72
                    >(Self::get_memory_win32_handle_properties_khr)
6192
72
                },
6193
72
            },
6194
72
            VulkanCommand {
6195
72
                name: "vkGetMemoryZirconHandleFUCHSIA",
6196
72
                features: smallvec![
Feature::Extension(Extension::FUCHSIAExternalMemory)0
],
6197
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetMemoryZirconHandleFuchsia),
6198
72
                proc: unsafe {
6199
72
                    std::mem::transmute::<
6200
72
                        vk::PFN_vkGetMemoryZirconHandleFUCHSIA,
6201
72
                        vk::PFN_vkVoidFunction,
6202
72
                    >(Self::get_memory_zircon_handle_fuchsia)
6203
72
                },
6204
72
            },
6205
72
            VulkanCommand {
6206
72
                name: "vkGetMemoryZirconHandlePropertiesFUCHSIA",
6207
72
                features: smallvec![
Feature::Extension(Extension::FUCHSIAExternalMemory)0
],
6208
72
                hooked: hooked_commands
6209
72
                    .contains(&LayerVulkanCommand::GetMemoryZirconHandlePropertiesFuchsia),
6210
72
                proc: unsafe {
6211
72
                    std::mem::transmute::<
6212
72
                        vk::PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA,
6213
72
                        vk::PFN_vkVoidFunction,
6214
72
                    >(Self::get_memory_zircon_handle_properties_fuchsia)
6215
72
                },
6216
72
            },
6217
72
            VulkanCommand {
6218
72
                name: "vkGetMicromapBuildSizesEXT",
6219
72
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
6220
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetMicromapBuildSizesExt),
6221
72
                proc: unsafe {
6222
72
                    std::mem::transmute::<vk::PFN_vkGetMicromapBuildSizesEXT, vk::PFN_vkVoidFunction>(
6223
72
                        Self::get_micromap_build_sizes_ext,
6224
72
                    )
6225
72
                },
6226
72
            },
6227
72
            VulkanCommand {
6228
72
                name: "vkGetPastPresentationTimingGOOGLE",
6229
72
                features: smallvec![
Feature::Extension(Extension::GOOGLEDisplayTiming)0
],
6230
72
                hooked: hooked_commands
6231
72
                    .contains(&LayerVulkanCommand::GetPastPresentationTimingGoogle),
6232
72
                proc: unsafe {
6233
72
                    std::mem::transmute::<
6234
72
                        vk::PFN_vkGetPastPresentationTimingGOOGLE,
6235
72
                        vk::PFN_vkVoidFunction,
6236
72
                    >(Self::get_past_presentation_timing_google)
6237
72
                },
6238
72
            },
6239
72
            VulkanCommand {
6240
72
                name: "vkGetPerformanceParameterINTEL",
6241
72
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
6242
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPerformanceParameterIntel),
6243
72
                proc: unsafe {
6244
72
                    std::mem::transmute::<
6245
72
                        vk::PFN_vkGetPerformanceParameterINTEL,
6246
72
                        vk::PFN_vkVoidFunction,
6247
72
                    >(Self::get_performance_parameter_intel)
6248
72
                },
6249
72
            },
6250
72
            VulkanCommand {
6251
72
                name: "vkGetPipelineCacheData",
6252
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6253
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPipelineCacheData),
6254
72
                proc: unsafe {
6255
72
                    std::mem::transmute::<vk::PFN_vkGetPipelineCacheData, vk::PFN_vkVoidFunction>(
6256
72
                        Self::get_pipeline_cache_data,
6257
72
                    )
6258
72
                },
6259
72
            },
6260
72
            VulkanCommand {
6261
72
                name: "vkGetPipelineExecutableInternalRepresentationsKHR",
6262
72
                features: smallvec![Feature::Extension(
6263
0
                    Extension::KHRPipelineExecutableProperties
6264
0
                )],
6265
72
                hooked: hooked_commands
6266
72
                    .contains(&LayerVulkanCommand::GetPipelineExecutableInternalRepresentationsKhr),
6267
72
                proc: unsafe {
6268
72
                    std::mem::transmute::<
6269
72
                        vk::PFN_vkGetPipelineExecutableInternalRepresentationsKHR,
6270
72
                        vk::PFN_vkVoidFunction,
6271
72
                    >(Self::get_pipeline_executable_internal_representations_khr)
6272
72
                },
6273
72
            },
6274
72
            VulkanCommand {
6275
72
                name: "vkGetPipelineExecutablePropertiesKHR",
6276
72
                features: smallvec![Feature::Extension(
6277
0
                    Extension::KHRPipelineExecutableProperties
6278
0
                )],
6279
72
                hooked: hooked_commands
6280
72
                    .contains(&LayerVulkanCommand::GetPipelineExecutablePropertiesKhr),
6281
72
                proc: unsafe {
6282
72
                    std::mem::transmute::<
6283
72
                        vk::PFN_vkGetPipelineExecutablePropertiesKHR,
6284
72
                        vk::PFN_vkVoidFunction,
6285
72
                    >(Self::get_pipeline_executable_properties_khr)
6286
72
                },
6287
72
            },
6288
72
            VulkanCommand {
6289
72
                name: "vkGetPipelineExecutableStatisticsKHR",
6290
72
                features: smallvec![Feature::Extension(
6291
0
                    Extension::KHRPipelineExecutableProperties
6292
0
                )],
6293
72
                hooked: hooked_commands
6294
72
                    .contains(&LayerVulkanCommand::GetPipelineExecutableStatisticsKhr),
6295
72
                proc: unsafe {
6296
72
                    std::mem::transmute::<
6297
72
                        vk::PFN_vkGetPipelineExecutableStatisticsKHR,
6298
72
                        vk::PFN_vkVoidFunction,
6299
72
                    >(Self::get_pipeline_executable_statistics_khr)
6300
72
                },
6301
72
            },
6302
72
            VulkanCommand {
6303
72
                name: "vkGetPipelinePropertiesEXT",
6304
72
                features: smallvec![
Feature::Extension(Extension::EXTPipelineProperties)0
],
6305
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPipelinePropertiesExt),
6306
72
                proc: unsafe {
6307
72
                    std::mem::transmute::<vk::PFN_vkGetPipelinePropertiesEXT, vk::PFN_vkVoidFunction>(
6308
72
                        Self::get_pipeline_properties_ext,
6309
72
                    )
6310
72
                },
6311
72
            },
6312
72
            VulkanCommand {
6313
72
                name: "vkGetPrivateData",
6314
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
6315
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPrivateData),
6316
72
                proc: unsafe {
6317
72
                    std::mem::transmute::<vk::PFN_vkGetPrivateData, vk::PFN_vkVoidFunction>(
6318
72
                        Self::get_private_data,
6319
72
                    )
6320
72
                },
6321
72
            },
6322
72
            VulkanCommand {
6323
72
                name: "vkGetPrivateDataEXT",
6324
72
                features: smallvec![
Feature::Extension(Extension::EXTPrivateData)0
],
6325
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPrivateData),
6326
72
                proc: unsafe {
6327
72
                    std::mem::transmute::<vk::PFN_vkGetPrivateData, vk::PFN_vkVoidFunction>(
6328
72
                        Self::get_private_data,
6329
72
                    )
6330
72
                },
6331
72
            },
6332
72
            VulkanCommand {
6333
72
                name: "vkGetQueryPoolResults",
6334
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6335
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetQueryPoolResults),
6336
72
                proc: unsafe {
6337
72
                    std::mem::transmute::<vk::PFN_vkGetQueryPoolResults, vk::PFN_vkVoidFunction>(
6338
72
                        Self::get_query_pool_results,
6339
72
                    )
6340
72
                },
6341
72
            },
6342
72
            VulkanCommand {
6343
72
                name: "vkGetQueueCheckpointData2NV",
6344
72
                features: smallvec![
Feature::Extension(Extension::KHRSynchronization2)0
],
6345
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetQueueCheckpointData2Nv),
6346
72
                proc: unsafe {
6347
72
                    std::mem::transmute::<vk::PFN_vkGetQueueCheckpointData2NV, vk::PFN_vkVoidFunction>(
6348
72
                        Self::get_queue_checkpoint_data2_nv,
6349
72
                    )
6350
72
                },
6351
72
            },
6352
72
            VulkanCommand {
6353
72
                name: "vkGetQueueCheckpointDataNV",
6354
72
                features: smallvec![
Feature::Extension(Extension::NVDeviceDiagnosticCheckpoints)0
],
6355
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetQueueCheckpointDataNv),
6356
72
                proc: unsafe {
6357
72
                    std::mem::transmute::<vk::PFN_vkGetQueueCheckpointDataNV, vk::PFN_vkVoidFunction>(
6358
72
                        Self::get_queue_checkpoint_data_nv,
6359
72
                    )
6360
72
                },
6361
72
            },
6362
72
            VulkanCommand {
6363
72
                name: "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR",
6364
72
                features: smallvec![
Feature::Extension(Extension::KHRRayTracingPipeline)0
],
6365
72
                hooked: hooked_commands
6366
72
                    .contains(&LayerVulkanCommand::GetRayTracingCaptureReplayShaderGroupHandlesKhr),
6367
72
                proc: unsafe {
6368
72
                    std::mem::transmute::<
6369
72
                        vk::PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR,
6370
72
                        vk::PFN_vkVoidFunction,
6371
72
                    >(
6372
72
                        Self::get_ray_tracing_capture_replay_shader_group_handles_khr
6373
72
                    )
6374
72
                },
6375
72
            },
6376
72
            VulkanCommand {
6377
72
                name: "vkGetRayTracingShaderGroupHandlesKHR",
6378
72
                features: smallvec![
Feature::Extension(Extension::KHRRayTracingPipeline)0
],
6379
72
                hooked: hooked_commands
6380
72
                    .contains(&LayerVulkanCommand::GetRayTracingShaderGroupHandlesKhr),
6381
72
                proc: unsafe {
6382
72
                    std::mem::transmute::<
6383
72
                        vk::PFN_vkGetRayTracingShaderGroupHandlesKHR,
6384
72
                        vk::PFN_vkVoidFunction,
6385
72
                    >(Self::get_ray_tracing_shader_group_handles_khr)
6386
72
                },
6387
72
            },
6388
72
            VulkanCommand {
6389
72
                name: "vkGetRayTracingShaderGroupHandlesNV",
6390
72
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
6391
72
                hooked: hooked_commands
6392
72
                    .contains(&LayerVulkanCommand::GetRayTracingShaderGroupHandlesKhr),
6393
72
                proc: unsafe {
6394
72
                    std::mem::transmute::<
6395
72
                        vk::PFN_vkGetRayTracingShaderGroupHandlesKHR,
6396
72
                        vk::PFN_vkVoidFunction,
6397
72
                    >(Self::get_ray_tracing_shader_group_handles_khr)
6398
72
                },
6399
72
            },
6400
72
            VulkanCommand {
6401
72
                name: "vkGetRayTracingShaderGroupStackSizeKHR",
6402
72
                features: smallvec![
Feature::Extension(Extension::KHRRayTracingPipeline)0
],
6403
72
                hooked: hooked_commands
6404
72
                    .contains(&LayerVulkanCommand::GetRayTracingShaderGroupStackSizeKhr),
6405
72
                proc: unsafe {
6406
72
                    std::mem::transmute::<
6407
72
                        vk::PFN_vkGetRayTracingShaderGroupStackSizeKHR,
6408
72
                        vk::PFN_vkVoidFunction,
6409
72
                    >(Self::get_ray_tracing_shader_group_stack_size_khr)
6410
72
                },
6411
72
            },
6412
72
            VulkanCommand {
6413
72
                name: "vkGetRefreshCycleDurationGOOGLE",
6414
72
                features: smallvec![
Feature::Extension(Extension::GOOGLEDisplayTiming)0
],
6415
72
                hooked: hooked_commands
6416
72
                    .contains(&LayerVulkanCommand::GetRefreshCycleDurationGoogle),
6417
72
                proc: unsafe {
6418
72
                    std::mem::transmute::<
6419
72
                        vk::PFN_vkGetRefreshCycleDurationGOOGLE,
6420
72
                        vk::PFN_vkVoidFunction,
6421
72
                    >(Self::get_refresh_cycle_duration_google)
6422
72
                },
6423
72
            },
6424
72
            VulkanCommand {
6425
72
                name: "vkGetRenderAreaGranularity",
6426
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6427
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetRenderAreaGranularity),
6428
72
                proc: unsafe {
6429
72
                    std::mem::transmute::<vk::PFN_vkGetRenderAreaGranularity, vk::PFN_vkVoidFunction>(
6430
72
                        Self::get_render_area_granularity,
6431
72
                    )
6432
72
                },
6433
72
            },
6434
72
            VulkanCommand {
6435
72
                name: "vkGetSamplerOpaqueCaptureDescriptorDataEXT",
6436
72
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
6437
72
                hooked: hooked_commands
6438
72
                    .contains(&LayerVulkanCommand::GetSamplerOpaqueCaptureDescriptorDataExt),
6439
72
                proc: unsafe {
6440
72
                    std::mem::transmute::<
6441
72
                        vk::PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT,
6442
72
                        vk::PFN_vkVoidFunction,
6443
72
                    >(Self::get_sampler_opaque_capture_descriptor_data_ext)
6444
72
                },
6445
72
            },
6446
72
            VulkanCommand {
6447
72
                name: "vkGetSemaphoreCounterValue",
6448
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
6449
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetSemaphoreCounterValue),
6450
72
                proc: unsafe {
6451
72
                    std::mem::transmute::<vk::PFN_vkGetSemaphoreCounterValue, vk::PFN_vkVoidFunction>(
6452
72
                        Self::get_semaphore_counter_value,
6453
72
                    )
6454
72
                },
6455
72
            },
6456
72
            VulkanCommand {
6457
72
                name: "vkGetSemaphoreCounterValueKHR",
6458
72
                features: smallvec![
Feature::Extension(Extension::KHRTimelineSemaphore)0
],
6459
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetSemaphoreCounterValue),
6460
72
                proc: unsafe {
6461
72
                    std::mem::transmute::<vk::PFN_vkGetSemaphoreCounterValue, vk::PFN_vkVoidFunction>(
6462
72
                        Self::get_semaphore_counter_value,
6463
72
                    )
6464
72
                },
6465
72
            },
6466
72
            VulkanCommand {
6467
72
                name: "vkGetSemaphoreFdKHR",
6468
72
                features: smallvec![
Feature::Extension(Extension::KHRExternalSemaphoreFd)0
],
6469
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetSemaphoreFdKhr),
6470
72
                proc: unsafe {
6471
72
                    std::mem::transmute::<vk::PFN_vkGetSemaphoreFdKHR, vk::PFN_vkVoidFunction>(
6472
72
                        Self::get_semaphore_fd_khr,
6473
72
                    )
6474
72
                },
6475
72
            },
6476
72
            VulkanCommand {
6477
72
                name: "vkGetSemaphoreWin32HandleKHR",
6478
72
                features: smallvec![
Feature::Extension(Extension::KHRExternalSemaphoreWin32)0
],
6479
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetSemaphoreWin32HandleKhr),
6480
72
                proc: unsafe {
6481
72
                    std::mem::transmute::<
6482
72
                        vk::PFN_vkGetSemaphoreWin32HandleKHR,
6483
72
                        vk::PFN_vkVoidFunction,
6484
72
                    >(Self::get_semaphore_win32_handle_khr)
6485
72
                },
6486
72
            },
6487
72
            VulkanCommand {
6488
72
                name: "vkGetSemaphoreZirconHandleFUCHSIA",
6489
72
                features: smallvec![
Feature::Extension(Extension::FUCHSIAExternalSemaphore)0
],
6490
72
                hooked: hooked_commands
6491
72
                    .contains(&LayerVulkanCommand::GetSemaphoreZirconHandleFuchsia),
6492
72
                proc: unsafe {
6493
72
                    std::mem::transmute::<
6494
72
                        vk::PFN_vkGetSemaphoreZirconHandleFUCHSIA,
6495
72
                        vk::PFN_vkVoidFunction,
6496
72
                    >(Self::get_semaphore_zircon_handle_fuchsia)
6497
72
                },
6498
72
            },
6499
72
            VulkanCommand {
6500
72
                name: "vkGetShaderInfoAMD",
6501
72
                features: smallvec![
Feature::Extension(Extension::AMDShaderInfo)0
],
6502
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetShaderInfoAmd),
6503
72
                proc: unsafe {
6504
72
                    std::mem::transmute::<vk::PFN_vkGetShaderInfoAMD, vk::PFN_vkVoidFunction>(
6505
72
                        Self::get_shader_info_amd,
6506
72
                    )
6507
72
                },
6508
72
            },
6509
72
            VulkanCommand {
6510
72
                name: "vkGetShaderModuleCreateInfoIdentifierEXT",
6511
72
                features: smallvec![
Feature::Extension(Extension::EXTShaderModuleIdentifier)0
],
6512
72
                hooked: hooked_commands
6513
72
                    .contains(&LayerVulkanCommand::GetShaderModuleCreateInfoIdentifierExt),
6514
72
                proc: unsafe {
6515
72
                    std::mem::transmute::<
6516
72
                        vk::PFN_vkGetShaderModuleCreateInfoIdentifierEXT,
6517
72
                        vk::PFN_vkVoidFunction,
6518
72
                    >(Self::get_shader_module_create_info_identifier_ext)
6519
72
                },
6520
72
            },
6521
72
            VulkanCommand {
6522
72
                name: "vkGetShaderModuleIdentifierEXT",
6523
72
                features: smallvec![
Feature::Extension(Extension::EXTShaderModuleIdentifier)0
],
6524
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetShaderModuleIdentifierExt),
6525
72
                proc: unsafe {
6526
72
                    std::mem::transmute::<
6527
72
                        vk::PFN_vkGetShaderModuleIdentifierEXT,
6528
72
                        vk::PFN_vkVoidFunction,
6529
72
                    >(Self::get_shader_module_identifier_ext)
6530
72
                },
6531
72
            },
6532
72
            VulkanCommand {
6533
72
                name: "vkGetSwapchainCounterEXT",
6534
72
                features: smallvec![
Feature::Extension(Extension::EXTDisplayControl)0
],
6535
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetSwapchainCounterExt),
6536
72
                proc: unsafe {
6537
72
                    std::mem::transmute::<vk::PFN_vkGetSwapchainCounterEXT, vk::PFN_vkVoidFunction>(
6538
72
                        Self::get_swapchain_counter_ext,
6539
72
                    )
6540
72
                },
6541
72
            },
6542
72
            VulkanCommand {
6543
72
                name: "vkGetSwapchainGrallocUsage2ANDROID",
6544
72
                features: smallvec![
Feature::Extension(Extension::ANDROIDNativeBuffer)0
],
6545
72
                hooked: hooked_commands
6546
72
                    .contains(&LayerVulkanCommand::GetSwapchainGrallocUsage2Android),
6547
72
                proc: unsafe {
6548
72
                    std::mem::transmute::<
6549
72
                        vk::PFN_vkGetSwapchainGrallocUsage2ANDROID,
6550
72
                        vk::PFN_vkVoidFunction,
6551
72
                    >(Self::get_swapchain_gralloc_usage2_android)
6552
72
                },
6553
72
            },
6554
72
            VulkanCommand {
6555
72
                name: "vkGetSwapchainGrallocUsageANDROID",
6556
72
                features: smallvec![
Feature::Extension(Extension::ANDROIDNativeBuffer)0
],
6557
72
                hooked: hooked_commands
6558
72
                    .contains(&LayerVulkanCommand::GetSwapchainGrallocUsageAndroid),
6559
72
                proc: unsafe {
6560
72
                    std::mem::transmute::<
6561
72
                        vk::PFN_vkGetSwapchainGrallocUsageANDROID,
6562
72
                        vk::PFN_vkVoidFunction,
6563
72
                    >(Self::get_swapchain_gralloc_usage_android)
6564
72
                },
6565
72
            },
6566
72
            VulkanCommand {
6567
72
                name: "vkGetSwapchainImagesKHR",
6568
72
                features: smallvec![
Feature::Extension(Extension::KHRSwapchain)0
],
6569
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetSwapchainImagesKhr),
6570
72
                proc: unsafe {
6571
72
                    std::mem::transmute::<vk::PFN_vkGetSwapchainImagesKHR, vk::PFN_vkVoidFunction>(
6572
72
                        Self::get_swapchain_images_khr,
6573
72
                    )
6574
72
                },
6575
72
            },
6576
72
            VulkanCommand {
6577
72
                name: "vkGetSwapchainStatusKHR",
6578
72
                features: smallvec![
Feature::Extension(Extension::KHRSharedPresentableImage)0
],
6579
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetSwapchainStatusKhr),
6580
72
                proc: unsafe {
6581
72
                    std::mem::transmute::<vk::PFN_vkGetSwapchainStatusKHR, vk::PFN_vkVoidFunction>(
6582
72
                        Self::get_swapchain_status_khr,
6583
72
                    )
6584
72
                },
6585
72
            },
6586
72
            VulkanCommand {
6587
72
                name: "vkGetValidationCacheDataEXT",
6588
72
                features: smallvec![
Feature::Extension(Extension::EXTValidationCache)0
],
6589
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetValidationCacheDataExt),
6590
72
                proc: unsafe {
6591
72
                    std::mem::transmute::<vk::PFN_vkGetValidationCacheDataEXT, vk::PFN_vkVoidFunction>(
6592
72
                        Self::get_validation_cache_data_ext,
6593
72
                    )
6594
72
                },
6595
72
            },
6596
72
            VulkanCommand {
6597
72
                name: "vkGetVideoSessionMemoryRequirementsKHR",
6598
72
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
6599
72
                hooked: hooked_commands
6600
72
                    .contains(&LayerVulkanCommand::GetVideoSessionMemoryRequirementsKhr),
6601
72
                proc: unsafe {
6602
72
                    std::mem::transmute::<
6603
72
                        vk::PFN_vkGetVideoSessionMemoryRequirementsKHR,
6604
72
                        vk::PFN_vkVoidFunction,
6605
72
                    >(Self::get_video_session_memory_requirements_khr)
6606
72
                },
6607
72
            },
6608
72
            VulkanCommand {
6609
72
                name: "vkImportFenceFdKHR",
6610
72
                features: smallvec![
Feature::Extension(Extension::KHRExternalFenceFd)0
],
6611
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::ImportFenceFdKhr),
6612
72
                proc: unsafe {
6613
72
                    std::mem::transmute::<vk::PFN_vkImportFenceFdKHR, vk::PFN_vkVoidFunction>(
6614
72
                        Self::import_fence_fd_khr,
6615
72
                    )
6616
72
                },
6617
72
            },
6618
72
            VulkanCommand {
6619
72
                name: "vkImportFenceWin32HandleKHR",
6620
72
                features: smallvec![
Feature::Extension(Extension::KHRExternalFenceWin32)0
],
6621
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::ImportFenceWin32HandleKhr),
6622
72
                proc: unsafe {
6623
72
                    std::mem::transmute::<vk::PFN_vkImportFenceWin32HandleKHR, vk::PFN_vkVoidFunction>(
6624
72
                        Self::import_fence_win32_handle_khr,
6625
72
                    )
6626
72
                },
6627
72
            },
6628
72
            VulkanCommand {
6629
72
                name: "vkImportSemaphoreFdKHR",
6630
72
                features: smallvec![
Feature::Extension(Extension::KHRExternalSemaphoreFd)0
],
6631
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::ImportSemaphoreFdKhr),
6632
72
                proc: unsafe {
6633
72
                    std::mem::transmute::<vk::PFN_vkImportSemaphoreFdKHR, vk::PFN_vkVoidFunction>(
6634
72
                        Self::import_semaphore_fd_khr,
6635
72
                    )
6636
72
                },
6637
72
            },
6638
72
            VulkanCommand {
6639
72
                name: "vkImportSemaphoreWin32HandleKHR",
6640
72
                features: smallvec![
Feature::Extension(Extension::KHRExternalSemaphoreWin32)0
],
6641
72
                hooked: hooked_commands
6642
72
                    .contains(&LayerVulkanCommand::ImportSemaphoreWin32HandleKhr),
6643
72
                proc: unsafe {
6644
72
                    std::mem::transmute::<
6645
72
                        vk::PFN_vkImportSemaphoreWin32HandleKHR,
6646
72
                        vk::PFN_vkVoidFunction,
6647
72
                    >(Self::import_semaphore_win32_handle_khr)
6648
72
                },
6649
72
            },
6650
72
            VulkanCommand {
6651
72
                name: "vkImportSemaphoreZirconHandleFUCHSIA",
6652
72
                features: smallvec![
Feature::Extension(Extension::FUCHSIAExternalSemaphore)0
],
6653
72
                hooked: hooked_commands
6654
72
                    .contains(&LayerVulkanCommand::ImportSemaphoreZirconHandleFuchsia),
6655
72
                proc: unsafe {
6656
72
                    std::mem::transmute::<
6657
72
                        vk::PFN_vkImportSemaphoreZirconHandleFUCHSIA,
6658
72
                        vk::PFN_vkVoidFunction,
6659
72
                    >(Self::import_semaphore_zircon_handle_fuchsia)
6660
72
                },
6661
72
            },
6662
72
            VulkanCommand {
6663
72
                name: "vkInitializePerformanceApiINTEL",
6664
72
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
6665
72
                hooked: hooked_commands
6666
72
                    .contains(&LayerVulkanCommand::InitializePerformanceApiIntel),
6667
72
                proc: unsafe {
6668
72
                    std::mem::transmute::<
6669
72
                        vk::PFN_vkInitializePerformanceApiINTEL,
6670
72
                        vk::PFN_vkVoidFunction,
6671
72
                    >(Self::initialize_performance_api_intel)
6672
72
                },
6673
72
            },
6674
72
            VulkanCommand {
6675
72
                name: "vkInvalidateMappedMemoryRanges",
6676
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6677
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::InvalidateMappedMemoryRanges),
6678
72
                proc: unsafe {
6679
72
                    std::mem::transmute::<
6680
72
                        vk::PFN_vkInvalidateMappedMemoryRanges,
6681
72
                        vk::PFN_vkVoidFunction,
6682
72
                    >(Self::invalidate_mapped_memory_ranges)
6683
72
                },
6684
72
            },
6685
72
            VulkanCommand {
6686
72
                name: "vkMapMemory",
6687
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6688
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::MapMemory),
6689
72
                proc: unsafe {
6690
72
                    std::mem::transmute::<vk::PFN_vkMapMemory, vk::PFN_vkVoidFunction>(
6691
72
                        Self::map_memory,
6692
72
                    )
6693
72
                },
6694
72
            },
6695
72
            VulkanCommand {
6696
72
                name: "vkMergePipelineCaches",
6697
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6698
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::MergePipelineCaches),
6699
72
                proc: unsafe {
6700
72
                    std::mem::transmute::<vk::PFN_vkMergePipelineCaches, vk::PFN_vkVoidFunction>(
6701
72
                        Self::merge_pipeline_caches,
6702
72
                    )
6703
72
                },
6704
72
            },
6705
72
            VulkanCommand {
6706
72
                name: "vkMergeValidationCachesEXT",
6707
72
                features: smallvec![
Feature::Extension(Extension::EXTValidationCache)0
],
6708
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::MergeValidationCachesExt),
6709
72
                proc: unsafe {
6710
72
                    std::mem::transmute::<vk::PFN_vkMergeValidationCachesEXT, vk::PFN_vkVoidFunction>(
6711
72
                        Self::merge_validation_caches_ext,
6712
72
                    )
6713
72
                },
6714
72
            },
6715
72
            VulkanCommand {
6716
72
                name: "vkQueueBeginDebugUtilsLabelEXT",
6717
72
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
6718
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::QueueBeginDebugUtilsLabelExt),
6719
72
                proc: unsafe {
6720
72
                    std::mem::transmute::<
6721
72
                        vk::PFN_vkQueueBeginDebugUtilsLabelEXT,
6722
72
                        vk::PFN_vkVoidFunction,
6723
72
                    >(Self::queue_begin_debug_utils_label_ext)
6724
72
                },
6725
72
            },
6726
72
            VulkanCommand {
6727
72
                name: "vkQueueBindSparse",
6728
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6729
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::QueueBindSparse),
6730
72
                proc: unsafe {
6731
72
                    std::mem::transmute::<vk::PFN_vkQueueBindSparse, vk::PFN_vkVoidFunction>(
6732
72
                        Self::queue_bind_sparse,
6733
72
                    )
6734
72
                },
6735
72
            },
6736
72
            VulkanCommand {
6737
72
                name: "vkQueueEndDebugUtilsLabelEXT",
6738
72
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
6739
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::QueueEndDebugUtilsLabelExt),
6740
72
                proc: unsafe {
6741
72
                    std::mem::transmute::<
6742
72
                        vk::PFN_vkQueueEndDebugUtilsLabelEXT,
6743
72
                        vk::PFN_vkVoidFunction,
6744
72
                    >(Self::queue_end_debug_utils_label_ext)
6745
72
                },
6746
72
            },
6747
72
            VulkanCommand {
6748
72
                name: "vkQueueInsertDebugUtilsLabelEXT",
6749
72
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
6750
72
                hooked: hooked_commands
6751
72
                    .contains(&LayerVulkanCommand::QueueInsertDebugUtilsLabelExt),
6752
72
                proc: unsafe {
6753
72
                    std::mem::transmute::<
6754
72
                        vk::PFN_vkQueueInsertDebugUtilsLabelEXT,
6755
72
                        vk::PFN_vkVoidFunction,
6756
72
                    >(Self::queue_insert_debug_utils_label_ext)
6757
72
                },
6758
72
            },
6759
72
            VulkanCommand {
6760
72
                name: "vkQueuePresentKHR",
6761
72
                features: smallvec![
Feature::Extension(Extension::KHRSwapchain)0
],
6762
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::QueuePresentKhr),
6763
72
                proc: unsafe {
6764
72
                    std::mem::transmute::<vk::PFN_vkQueuePresentKHR, vk::PFN_vkVoidFunction>(
6765
72
                        Self::queue_present_khr,
6766
72
                    )
6767
72
                },
6768
72
            },
6769
72
            VulkanCommand {
6770
72
                name: "vkQueueSetPerformanceConfigurationINTEL",
6771
72
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
6772
72
                hooked: hooked_commands
6773
72
                    .contains(&LayerVulkanCommand::QueueSetPerformanceConfigurationIntel),
6774
72
                proc: unsafe {
6775
72
                    std::mem::transmute::<
6776
72
                        vk::PFN_vkQueueSetPerformanceConfigurationINTEL,
6777
72
                        vk::PFN_vkVoidFunction,
6778
72
                    >(Self::queue_set_performance_configuration_intel)
6779
72
                },
6780
72
            },
6781
72
            VulkanCommand {
6782
72
                name: "vkQueueSignalReleaseImageANDROID",
6783
72
                features: smallvec![
Feature::Extension(Extension::ANDROIDNativeBuffer)0
],
6784
72
                hooked: hooked_commands
6785
72
                    .contains(&LayerVulkanCommand::QueueSignalReleaseImageAndroid),
6786
72
                proc: unsafe {
6787
72
                    std::mem::transmute::<
6788
72
                        vk::PFN_vkQueueSignalReleaseImageANDROID,
6789
72
                        vk::PFN_vkVoidFunction,
6790
72
                    >(Self::queue_signal_release_image_android)
6791
72
                },
6792
72
            },
6793
72
            VulkanCommand {
6794
72
                name: "vkQueueSubmit",
6795
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6796
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::QueueSubmit),
6797
72
                proc: unsafe {
6798
72
                    std::mem::transmute::<vk::PFN_vkQueueSubmit, vk::PFN_vkVoidFunction>(
6799
72
                        Self::queue_submit,
6800
72
                    )
6801
72
                },
6802
72
            },
6803
72
            VulkanCommand {
6804
72
                name: "vkQueueSubmit2",
6805
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
6806
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::QueueSubmit2),
6807
72
                proc: unsafe {
6808
72
                    std::mem::transmute::<vk::PFN_vkQueueSubmit2, vk::PFN_vkVoidFunction>(
6809
72
                        Self::queue_submit2,
6810
72
                    )
6811
72
                },
6812
72
            },
6813
72
            VulkanCommand {
6814
72
                name: "vkQueueSubmit2KHR",
6815
72
                features: smallvec![
Feature::Extension(Extension::KHRSynchronization2)0
],
6816
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::QueueSubmit2),
6817
72
                proc: unsafe {
6818
72
                    std::mem::transmute::<vk::PFN_vkQueueSubmit2, vk::PFN_vkVoidFunction>(
6819
72
                        Self::queue_submit2,
6820
72
                    )
6821
72
                },
6822
72
            },
6823
72
            VulkanCommand {
6824
72
                name: "vkQueueWaitIdle",
6825
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6826
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::QueueWaitIdle),
6827
72
                proc: unsafe {
6828
72
                    std::mem::transmute::<vk::PFN_vkQueueWaitIdle, vk::PFN_vkVoidFunction>(
6829
72
                        Self::queue_wait_idle,
6830
72
                    )
6831
72
                },
6832
72
            },
6833
72
            VulkanCommand {
6834
72
                name: "vkRegisterDeviceEventEXT",
6835
72
                features: smallvec![
Feature::Extension(Extension::EXTDisplayControl)0
],
6836
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::RegisterDeviceEventExt),
6837
72
                proc: unsafe {
6838
72
                    std::mem::transmute::<vk::PFN_vkRegisterDeviceEventEXT, vk::PFN_vkVoidFunction>(
6839
72
                        Self::register_device_event_ext,
6840
72
                    )
6841
72
                },
6842
72
            },
6843
72
            VulkanCommand {
6844
72
                name: "vkRegisterDisplayEventEXT",
6845
72
                features: smallvec![
Feature::Extension(Extension::EXTDisplayControl)0
],
6846
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::RegisterDisplayEventExt),
6847
72
                proc: unsafe {
6848
72
                    std::mem::transmute::<vk::PFN_vkRegisterDisplayEventEXT, vk::PFN_vkVoidFunction>(
6849
72
                        Self::register_display_event_ext,
6850
72
                    )
6851
72
                },
6852
72
            },
6853
72
            VulkanCommand {
6854
72
                name: "vkReleaseFullScreenExclusiveModeEXT",
6855
72
                features: smallvec![
Feature::Extension(Extension::EXTFullScreenExclusive)0
],
6856
72
                hooked: hooked_commands
6857
72
                    .contains(&LayerVulkanCommand::ReleaseFullScreenExclusiveModeExt),
6858
72
                proc: unsafe {
6859
72
                    std::mem::transmute::<
6860
72
                        vk::PFN_vkReleaseFullScreenExclusiveModeEXT,
6861
72
                        vk::PFN_vkVoidFunction,
6862
72
                    >(Self::release_full_screen_exclusive_mode_ext)
6863
72
                },
6864
72
            },
6865
72
            VulkanCommand {
6866
72
                name: "vkReleasePerformanceConfigurationINTEL",
6867
72
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
6868
72
                hooked: hooked_commands
6869
72
                    .contains(&LayerVulkanCommand::ReleasePerformanceConfigurationIntel),
6870
72
                proc: unsafe {
6871
72
                    std::mem::transmute::<
6872
72
                        vk::PFN_vkReleasePerformanceConfigurationINTEL,
6873
72
                        vk::PFN_vkVoidFunction,
6874
72
                    >(Self::release_performance_configuration_intel)
6875
72
                },
6876
72
            },
6877
72
            VulkanCommand {
6878
72
                name: "vkReleaseProfilingLockKHR",
6879
72
                features: smallvec![
Feature::Extension(Extension::KHRPerformanceQuery)0
],
6880
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::ReleaseProfilingLockKhr),
6881
72
                proc: unsafe {
6882
72
                    std::mem::transmute::<vk::PFN_vkReleaseProfilingLockKHR, vk::PFN_vkVoidFunction>(
6883
72
                        Self::release_profiling_lock_khr,
6884
72
                    )
6885
72
                },
6886
72
            },
6887
72
            VulkanCommand {
6888
72
                name: "vkReleaseSwapchainImagesEXT",
6889
72
                features: smallvec![
Feature::Extension(Extension::EXTSwapchainMaintenance1)0
],
6890
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::ReleaseSwapchainImagesExt),
6891
72
                proc: unsafe {
6892
72
                    std::mem::transmute::<vk::PFN_vkReleaseSwapchainImagesEXT, vk::PFN_vkVoidFunction>(
6893
72
                        Self::release_swapchain_images_ext,
6894
72
                    )
6895
72
                },
6896
72
            },
6897
72
            VulkanCommand {
6898
72
                name: "vkResetCommandBuffer",
6899
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6900
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::ResetCommandBuffer),
6901
72
                proc: unsafe {
6902
72
                    std::mem::transmute::<vk::PFN_vkResetCommandBuffer, vk::PFN_vkVoidFunction>(
6903
72
                        Self::reset_command_buffer,
6904
72
                    )
6905
72
                },
6906
72
            },
6907
72
            VulkanCommand {
6908
72
                name: "vkResetCommandPool",
6909
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6910
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::ResetCommandPool),
6911
72
                proc: unsafe {
6912
72
                    std::mem::transmute::<vk::PFN_vkResetCommandPool, vk::PFN_vkVoidFunction>(
6913
72
                        Self::reset_command_pool,
6914
72
                    )
6915
72
                },
6916
72
            },
6917
72
            VulkanCommand {
6918
72
                name: "vkResetDescriptorPool",
6919
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6920
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::ResetDescriptorPool),
6921
72
                proc: unsafe {
6922
72
                    std::mem::transmute::<vk::PFN_vkResetDescriptorPool, vk::PFN_vkVoidFunction>(
6923
72
                        Self::reset_descriptor_pool,
6924
72
                    )
6925
72
                },
6926
72
            },
6927
72
            VulkanCommand {
6928
72
                name: "vkResetEvent",
6929
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6930
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::ResetEvent),
6931
72
                proc: unsafe {
6932
72
                    std::mem::transmute::<vk::PFN_vkResetEvent, vk::PFN_vkVoidFunction>(
6933
72
                        Self::reset_event,
6934
72
                    )
6935
72
                },
6936
72
            },
6937
72
            VulkanCommand {
6938
72
                name: "vkResetFences",
6939
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6940
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::ResetFences),
6941
72
                proc: unsafe {
6942
72
                    std::mem::transmute::<vk::PFN_vkResetFences, vk::PFN_vkVoidFunction>(
6943
72
                        Self::reset_fences,
6944
72
                    )
6945
72
                },
6946
72
            },
6947
72
            VulkanCommand {
6948
72
                name: "vkResetQueryPool",
6949
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
6950
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::ResetQueryPool),
6951
72
                proc: unsafe {
6952
72
                    std::mem::transmute::<vk::PFN_vkResetQueryPool, vk::PFN_vkVoidFunction>(
6953
72
                        Self::reset_query_pool,
6954
72
                    )
6955
72
                },
6956
72
            },
6957
72
            VulkanCommand {
6958
72
                name: "vkResetQueryPoolEXT",
6959
72
                features: smallvec![
Feature::Extension(Extension::EXTHostQueryReset)0
],
6960
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::ResetQueryPool),
6961
72
                proc: unsafe {
6962
72
                    std::mem::transmute::<vk::PFN_vkResetQueryPool, vk::PFN_vkVoidFunction>(
6963
72
                        Self::reset_query_pool,
6964
72
                    )
6965
72
                },
6966
72
            },
6967
72
            VulkanCommand {
6968
72
                name: "vkSetBufferCollectionBufferConstraintsFUCHSIA",
6969
72
                features: smallvec![
Feature::Extension(Extension::FUCHSIABufferCollection)0
],
6970
72
                hooked: hooked_commands
6971
72
                    .contains(&LayerVulkanCommand::SetBufferCollectionBufferConstraintsFuchsia),
6972
72
                proc: unsafe {
6973
72
                    std::mem::transmute::<
6974
72
                        vk::PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA,
6975
72
                        vk::PFN_vkVoidFunction,
6976
72
                    >(Self::set_buffer_collection_buffer_constraints_fuchsia)
6977
72
                },
6978
72
            },
6979
72
            VulkanCommand {
6980
72
                name: "vkSetBufferCollectionImageConstraintsFUCHSIA",
6981
72
                features: smallvec![
Feature::Extension(Extension::FUCHSIABufferCollection)0
],
6982
72
                hooked: hooked_commands
6983
72
                    .contains(&LayerVulkanCommand::SetBufferCollectionImageConstraintsFuchsia),
6984
72
                proc: unsafe {
6985
72
                    std::mem::transmute::<
6986
72
                        vk::PFN_vkSetBufferCollectionImageConstraintsFUCHSIA,
6987
72
                        vk::PFN_vkVoidFunction,
6988
72
                    >(Self::set_buffer_collection_image_constraints_fuchsia)
6989
72
                },
6990
72
            },
6991
72
            VulkanCommand {
6992
72
                name: "vkSetDebugUtilsObjectNameEXT",
6993
72
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
6994
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::SetDebugUtilsObjectNameExt),
6995
72
                proc: unsafe {
6996
72
                    std::mem::transmute::<
6997
72
                        vk::PFN_vkSetDebugUtilsObjectNameEXT,
6998
72
                        vk::PFN_vkVoidFunction,
6999
72
                    >(Self::set_debug_utils_object_name_ext)
7000
72
                },
7001
72
            },
7002
72
            VulkanCommand {
7003
72
                name: "vkSetDebugUtilsObjectTagEXT",
7004
72
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
7005
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::SetDebugUtilsObjectTagExt),
7006
72
                proc: unsafe {
7007
72
                    std::mem::transmute::<vk::PFN_vkSetDebugUtilsObjectTagEXT, vk::PFN_vkVoidFunction>(
7008
72
                        Self::set_debug_utils_object_tag_ext,
7009
72
                    )
7010
72
                },
7011
72
            },
7012
72
            VulkanCommand {
7013
72
                name: "vkSetDeviceMemoryPriorityEXT",
7014
72
                features: smallvec![
Feature::Extension(Extension::EXTPageableDeviceLocalMemory)0
],
7015
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::SetDeviceMemoryPriorityExt),
7016
72
                proc: unsafe {
7017
72
                    std::mem::transmute::<
7018
72
                        vk::PFN_vkSetDeviceMemoryPriorityEXT,
7019
72
                        vk::PFN_vkVoidFunction,
7020
72
                    >(Self::set_device_memory_priority_ext)
7021
72
                },
7022
72
            },
7023
72
            VulkanCommand {
7024
72
                name: "vkSetEvent",
7025
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
7026
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::SetEvent),
7027
72
                proc: unsafe {
7028
72
                    std::mem::transmute::<vk::PFN_vkSetEvent, vk::PFN_vkVoidFunction>(
7029
72
                        Self::set_event,
7030
72
                    )
7031
72
                },
7032
72
            },
7033
72
            VulkanCommand {
7034
72
                name: "vkSetHdrMetadataEXT",
7035
72
                features: smallvec![
Feature::Extension(Extension::EXTHdrMetadata)0
],
7036
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::SetHdrMetadataExt),
7037
72
                proc: unsafe {
7038
72
                    std::mem::transmute::<vk::PFN_vkSetHdrMetadataEXT, vk::PFN_vkVoidFunction>(
7039
72
                        Self::set_hdr_metadata_ext,
7040
72
                    )
7041
72
                },
7042
72
            },
7043
72
            VulkanCommand {
7044
72
                name: "vkSetLocalDimmingAMD",
7045
72
                features: smallvec![
Feature::Extension(Extension::AMDDisplayNativeHdr)0
],
7046
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::SetLocalDimmingAmd),
7047
72
                proc: unsafe {
7048
72
                    std::mem::transmute::<vk::PFN_vkSetLocalDimmingAMD, vk::PFN_vkVoidFunction>(
7049
72
                        Self::set_local_dimming_amd,
7050
72
                    )
7051
72
                },
7052
72
            },
7053
72
            VulkanCommand {
7054
72
                name: "vkSetPrivateData",
7055
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
7056
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::SetPrivateData),
7057
72
                proc: unsafe {
7058
72
                    std::mem::transmute::<vk::PFN_vkSetPrivateData, vk::PFN_vkVoidFunction>(
7059
72
                        Self::set_private_data,
7060
72
                    )
7061
72
                },
7062
72
            },
7063
72
            VulkanCommand {
7064
72
                name: "vkSetPrivateDataEXT",
7065
72
                features: smallvec![
Feature::Extension(Extension::EXTPrivateData)0
],
7066
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::SetPrivateData),
7067
72
                proc: unsafe {
7068
72
                    std::mem::transmute::<vk::PFN_vkSetPrivateData, vk::PFN_vkVoidFunction>(
7069
72
                        Self::set_private_data,
7070
72
                    )
7071
72
                },
7072
72
            },
7073
72
            VulkanCommand {
7074
72
                name: "vkSignalSemaphore",
7075
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
7076
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::SignalSemaphore),
7077
72
                proc: unsafe {
7078
72
                    std::mem::transmute::<vk::PFN_vkSignalSemaphore, vk::PFN_vkVoidFunction>(
7079
72
                        Self::signal_semaphore,
7080
72
                    )
7081
72
                },
7082
72
            },
7083
72
            VulkanCommand {
7084
72
                name: "vkSignalSemaphoreKHR",
7085
72
                features: smallvec![
Feature::Extension(Extension::KHRTimelineSemaphore)0
],
7086
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::SignalSemaphore),
7087
72
                proc: unsafe {
7088
72
                    std::mem::transmute::<vk::PFN_vkSignalSemaphore, vk::PFN_vkVoidFunction>(
7089
72
                        Self::signal_semaphore,
7090
72
                    )
7091
72
                },
7092
72
            },
7093
72
            VulkanCommand {
7094
72
                name: "vkTrimCommandPool",
7095
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
7096
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::TrimCommandPool),
7097
72
                proc: unsafe {
7098
72
                    std::mem::transmute::<vk::PFN_vkTrimCommandPool, vk::PFN_vkVoidFunction>(
7099
72
                        Self::trim_command_pool,
7100
72
                    )
7101
72
                },
7102
72
            },
7103
72
            VulkanCommand {
7104
72
                name: "vkTrimCommandPoolKHR",
7105
72
                features: smallvec![
Feature::Extension(Extension::KHRMaintenance1)0
],
7106
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::TrimCommandPool),
7107
72
                proc: unsafe {
7108
72
                    std::mem::transmute::<vk::PFN_vkTrimCommandPool, vk::PFN_vkVoidFunction>(
7109
72
                        Self::trim_command_pool,
7110
72
                    )
7111
72
                },
7112
72
            },
7113
72
            VulkanCommand {
7114
72
                name: "vkUninitializePerformanceApiINTEL",
7115
72
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
7116
72
                hooked: hooked_commands
7117
72
                    .contains(&LayerVulkanCommand::UninitializePerformanceApiIntel),
7118
72
                proc: unsafe {
7119
72
                    std::mem::transmute::<
7120
72
                        vk::PFN_vkUninitializePerformanceApiINTEL,
7121
72
                        vk::PFN_vkVoidFunction,
7122
72
                    >(Self::uninitialize_performance_api_intel)
7123
72
                },
7124
72
            },
7125
72
            VulkanCommand {
7126
72
                name: "vkUnmapMemory",
7127
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
7128
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::UnmapMemory),
7129
72
                proc: unsafe {
7130
72
                    std::mem::transmute::<vk::PFN_vkUnmapMemory, vk::PFN_vkVoidFunction>(
7131
72
                        Self::unmap_memory,
7132
72
                    )
7133
72
                },
7134
72
            },
7135
72
            VulkanCommand {
7136
72
                name: "vkUpdateDescriptorSetWithTemplate",
7137
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
7138
72
                hooked: hooked_commands
7139
72
                    .contains(&LayerVulkanCommand::UpdateDescriptorSetWithTemplate),
7140
72
                proc: unsafe {
7141
72
                    std::mem::transmute::<
7142
72
                        vk::PFN_vkUpdateDescriptorSetWithTemplate,
7143
72
                        vk::PFN_vkVoidFunction,
7144
72
                    >(Self::update_descriptor_set_with_template)
7145
72
                },
7146
72
            },
7147
72
            VulkanCommand {
7148
72
                name: "vkUpdateDescriptorSetWithTemplateKHR",
7149
72
                features: smallvec![
Feature::Extension(Extension::KHRDescriptorUpdateTemplate)0
],
7150
72
                hooked: hooked_commands
7151
72
                    .contains(&LayerVulkanCommand::UpdateDescriptorSetWithTemplate),
7152
72
                proc: unsafe {
7153
72
                    std::mem::transmute::<
7154
72
                        vk::PFN_vkUpdateDescriptorSetWithTemplate,
7155
72
                        vk::PFN_vkVoidFunction,
7156
72
                    >(Self::update_descriptor_set_with_template)
7157
72
                },
7158
72
            },
7159
72
            VulkanCommand {
7160
72
                name: "vkUpdateDescriptorSets",
7161
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
7162
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::UpdateDescriptorSets),
7163
72
                proc: unsafe {
7164
72
                    std::mem::transmute::<vk::PFN_vkUpdateDescriptorSets, vk::PFN_vkVoidFunction>(
7165
72
                        Self::update_descriptor_sets,
7166
72
                    )
7167
72
                },
7168
72
            },
7169
72
            VulkanCommand {
7170
72
                name: "vkUpdateVideoSessionParametersKHR",
7171
72
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
7172
72
                hooked: hooked_commands
7173
72
                    .contains(&LayerVulkanCommand::UpdateVideoSessionParametersKhr),
7174
72
                proc: unsafe {
7175
72
                    std::mem::transmute::<
7176
72
                        vk::PFN_vkUpdateVideoSessionParametersKHR,
7177
72
                        vk::PFN_vkVoidFunction,
7178
72
                    >(Self::update_video_session_parameters_khr)
7179
72
                },
7180
72
            },
7181
72
            VulkanCommand {
7182
72
                name: "vkWaitForFences",
7183
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
7184
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::WaitForFences),
7185
72
                proc: unsafe {
7186
72
                    std::mem::transmute::<vk::PFN_vkWaitForFences, vk::PFN_vkVoidFunction>(
7187
72
                        Self::wait_for_fences,
7188
72
                    )
7189
72
                },
7190
72
            },
7191
72
            VulkanCommand {
7192
72
                name: "vkWaitForPresentKHR",
7193
72
                features: smallvec![
Feature::Extension(Extension::KHRPresentWait)0
],
7194
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::WaitForPresentKhr),
7195
72
                proc: unsafe {
7196
72
                    std::mem::transmute::<vk::PFN_vkWaitForPresentKHR, vk::PFN_vkVoidFunction>(
7197
72
                        Self::wait_for_present_khr,
7198
72
                    )
7199
72
                },
7200
72
            },
7201
72
            VulkanCommand {
7202
72
                name: "vkWaitSemaphores",
7203
72
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
7204
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::WaitSemaphores),
7205
72
                proc: unsafe {
7206
72
                    std::mem::transmute::<vk::PFN_vkWaitSemaphores, vk::PFN_vkVoidFunction>(
7207
72
                        Self::wait_semaphores,
7208
72
                    )
7209
72
                },
7210
72
            },
7211
72
            VulkanCommand {
7212
72
                name: "vkWaitSemaphoresKHR",
7213
72
                features: smallvec![
Feature::Extension(Extension::KHRTimelineSemaphore)0
],
7214
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::WaitSemaphores),
7215
72
                proc: unsafe {
7216
72
                    std::mem::transmute::<vk::PFN_vkWaitSemaphores, vk::PFN_vkVoidFunction>(
7217
72
                        Self::wait_semaphores,
7218
72
                    )
7219
72
                },
7220
72
            },
7221
72
            VulkanCommand {
7222
72
                name: "vkWriteAccelerationStructuresPropertiesKHR",
7223
72
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
7224
72
                hooked: hooked_commands
7225
72
                    .contains(&LayerVulkanCommand::WriteAccelerationStructuresPropertiesKhr),
7226
72
                proc: unsafe {
7227
72
                    std::mem::transmute::<
7228
72
                        vk::PFN_vkWriteAccelerationStructuresPropertiesKHR,
7229
72
                        vk::PFN_vkVoidFunction,
7230
72
                    >(Self::write_acceleration_structures_properties_khr)
7231
72
                },
7232
72
            },
7233
72
            VulkanCommand {
7234
72
                name: "vkWriteMicromapsPropertiesEXT",
7235
72
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
7236
72
                hooked: hooked_commands.contains(&LayerVulkanCommand::WriteMicromapsPropertiesExt),
7237
72
                proc: unsafe {
7238
72
                    std::mem::transmute::<
7239
72
                        vk::PFN_vkWriteMicromapsPropertiesEXT,
7240
72
                        vk::PFN_vkVoidFunction,
7241
72
                    >(Self::write_micromaps_properties_ext)
7242
72
                },
7243
72
            },
7244
72
        ])
7245
72
    }
7246
49
    pub(crate) fn create_instance_commands(
7247
49
        &self,
7248
49
        instance_info: &T::InstanceInfo,
7249
49
    ) -> Box<[VulkanCommand]> {
7250
49
        let hooked_commands = self
7251
49
            .layer_info
7252
49
            .hooked_instance_commands(instance_info)
7253
49
            .collect::<HashSet<_>>();
7254
49
        Box::new([
7255
49
            VulkanCommand {
7256
49
                name: "vkAcquireDrmDisplayEXT",
7257
49
                features: smallvec![
Feature::Extension(Extension::EXTAcquireDrmDisplay)0
],
7258
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::AcquireDrmDisplayExt),
7259
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkAcquireDrmDisplayEXT, vk::PFN_vkVoidFunction>(Self::acquire_drm_display_ext)},
7260
49
            },
7261
49
            VulkanCommand {
7262
49
                name: "vkAcquireWinrtDisplayNV",
7263
49
                features: smallvec![
Feature::Extension(Extension::NVAcquireWinrtDisplay)0
],
7264
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::AcquireWinrtDisplayNv),
7265
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkAcquireWinrtDisplayNV, vk::PFN_vkVoidFunction>(Self::acquire_winrt_display_nv)},
7266
49
            },
7267
49
            VulkanCommand {
7268
49
                name: "vkAcquireXlibDisplayEXT",
7269
49
                features: smallvec![
Feature::Extension(Extension::EXTAcquireXlibDisplay)0
],
7270
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::AcquireXlibDisplayExt),
7271
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkAcquireXlibDisplayEXT, vk::PFN_vkVoidFunction>(Self::acquire_xlib_display_ext)},
7272
49
            },
7273
49
            VulkanCommand {
7274
49
                name: "vkCreateAndroidSurfaceKHR",
7275
49
                features: smallvec![
Feature::Extension(Extension::KHRAndroidSurface)0
],
7276
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateAndroidSurfaceKhr),
7277
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateAndroidSurfaceKHR, vk::PFN_vkVoidFunction>(Self::create_android_surface_khr)},
7278
49
            },
7279
49
            VulkanCommand {
7280
49
                name: "vkCreateDebugReportCallbackEXT",
7281
49
                features: smallvec![
Feature::Extension(Extension::EXTDebugReport)0
],
7282
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateDebugReportCallbackExt),
7283
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateDebugReportCallbackEXT, vk::PFN_vkVoidFunction>(Self::create_debug_report_callback_ext)},
7284
49
            },
7285
49
            VulkanCommand {
7286
49
                name: "vkCreateDebugUtilsMessengerEXT",
7287
49
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
7288
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateDebugUtilsMessengerExt),
7289
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateDebugUtilsMessengerEXT, vk::PFN_vkVoidFunction>(Self::create_debug_utils_messenger_ext)},
7290
49
            },
7291
49
            VulkanCommand {
7292
49
                name: "vkCreateDevice",
7293
49
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7294
                hooked: true,
7295
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateDevice, vk::PFN_vkVoidFunction>(Self::create_device)},
7296
49
            },
7297
49
            VulkanCommand {
7298
49
                name: "vkCreateDirectFBSurfaceEXT",
7299
49
                features: smallvec![
Feature::Extension(Extension::EXTDirectfbSurface)0
],
7300
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateDirectFbSurfaceExt),
7301
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateDirectFBSurfaceEXT, vk::PFN_vkVoidFunction>(Self::create_direct_fb_surface_ext)},
7302
49
            },
7303
49
            VulkanCommand {
7304
49
                name: "vkCreateDisplayModeKHR",
7305
49
                features: smallvec![
Feature::Extension(Extension::KHRDisplay)0
],
7306
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateDisplayModeKhr),
7307
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateDisplayModeKHR, vk::PFN_vkVoidFunction>(Self::create_display_mode_khr)},
7308
49
            },
7309
49
            VulkanCommand {
7310
49
                name: "vkCreateDisplayPlaneSurfaceKHR",
7311
49
                features: smallvec![
Feature::Extension(Extension::KHRDisplay)0
],
7312
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateDisplayPlaneSurfaceKhr),
7313
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateDisplayPlaneSurfaceKHR, vk::PFN_vkVoidFunction>(Self::create_display_plane_surface_khr)},
7314
49
            },
7315
49
            VulkanCommand {
7316
49
                name: "vkCreateHeadlessSurfaceEXT",
7317
49
                features: smallvec![
Feature::Extension(Extension::EXTHeadlessSurface)0
],
7318
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateHeadlessSurfaceExt),
7319
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateHeadlessSurfaceEXT, vk::PFN_vkVoidFunction>(Self::create_headless_surface_ext)},
7320
49
            },
7321
49
            VulkanCommand {
7322
49
                name: "vkCreateIOSSurfaceMVK",
7323
49
                features: smallvec![
Feature::Extension(Extension::MVKIosSurface)0
],
7324
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateIosSurfaceMvk),
7325
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateIOSSurfaceMVK, vk::PFN_vkVoidFunction>(Self::create_ios_surface_mvk)},
7326
49
            },
7327
49
            VulkanCommand {
7328
49
                name: "vkCreateImagePipeSurfaceFUCHSIA",
7329
49
                features: smallvec![
Feature::Extension(Extension::FUCHSIAImagepipeSurface)0
],
7330
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateImagePipeSurfaceFuchsia),
7331
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateImagePipeSurfaceFUCHSIA, vk::PFN_vkVoidFunction>(Self::create_image_pipe_surface_fuchsia)},
7332
49
            },
7333
49
            VulkanCommand {
7334
49
                name: "vkCreateMacOSSurfaceMVK",
7335
49
                features: smallvec![
Feature::Extension(Extension::MVKMacosSurface)0
],
7336
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateMacOsSurfaceMvk),
7337
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateMacOSSurfaceMVK, vk::PFN_vkVoidFunction>(Self::create_mac_os_surface_mvk)},
7338
49
            },
7339
49
            VulkanCommand {
7340
49
                name: "vkCreateMetalSurfaceEXT",
7341
49
                features: smallvec![
Feature::Extension(Extension::EXTMetalSurface)0
],
7342
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateMetalSurfaceExt),
7343
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateMetalSurfaceEXT, vk::PFN_vkVoidFunction>(Self::create_metal_surface_ext)},
7344
49
            },
7345
49
            VulkanCommand {
7346
49
                name: "vkCreateScreenSurfaceQNX",
7347
49
                features: smallvec![
Feature::Extension(Extension::QNXScreenSurface)0
],
7348
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateScreenSurfaceQnx),
7349
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateScreenSurfaceQNX, vk::PFN_vkVoidFunction>(Self::create_screen_surface_qnx)},
7350
49
            },
7351
49
            VulkanCommand {
7352
49
                name: "vkCreateStreamDescriptorSurfaceGGP",
7353
49
                features: smallvec![
Feature::Extension(Extension::GGPStreamDescriptorSurface)0
],
7354
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateStreamDescriptorSurfaceGgp),
7355
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateStreamDescriptorSurfaceGGP, vk::PFN_vkVoidFunction>(Self::create_stream_descriptor_surface_ggp)},
7356
49
            },
7357
49
            VulkanCommand {
7358
49
                name: "vkCreateViSurfaceNN",
7359
49
                features: smallvec![
Feature::Extension(Extension::NNViSurface)0
],
7360
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateViSurfaceNn),
7361
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateViSurfaceNN, vk::PFN_vkVoidFunction>(Self::create_vi_surface_nn)},
7362
49
            },
7363
49
            VulkanCommand {
7364
49
                name: "vkCreateWaylandSurfaceKHR",
7365
49
                features: smallvec![
Feature::Extension(Extension::KHRWaylandSurface)0
],
7366
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateWaylandSurfaceKhr),
7367
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateWaylandSurfaceKHR, vk::PFN_vkVoidFunction>(Self::create_wayland_surface_khr)},
7368
49
            },
7369
49
            VulkanCommand {
7370
49
                name: "vkCreateWin32SurfaceKHR",
7371
49
                features: smallvec![
Feature::Extension(Extension::KHRWin32Surface)0
],
7372
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateWin32SurfaceKhr),
7373
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateWin32SurfaceKHR, vk::PFN_vkVoidFunction>(Self::create_win32_surface_khr)},
7374
49
            },
7375
49
            VulkanCommand {
7376
49
                name: "vkCreateXcbSurfaceKHR",
7377
49
                features: smallvec![
Feature::Extension(Extension::KHRXcbSurface)0
],
7378
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateXcbSurfaceKhr),
7379
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateXcbSurfaceKHR, vk::PFN_vkVoidFunction>(Self::create_xcb_surface_khr)},
7380
49
            },
7381
49
            VulkanCommand {
7382
49
                name: "vkCreateXlibSurfaceKHR",
7383
49
                features: smallvec![
Feature::Extension(Extension::KHRXlibSurface)0
],
7384
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateXlibSurfaceKhr),
7385
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateXlibSurfaceKHR, vk::PFN_vkVoidFunction>(Self::create_xlib_surface_khr)},
7386
49
            },
7387
49
            VulkanCommand {
7388
49
                name: "vkDebugReportMessageEXT",
7389
49
                features: smallvec![
Feature::Extension(Extension::EXTDebugReport)0
],
7390
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::DebugReportMessageExt),
7391
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkDebugReportMessageEXT, vk::PFN_vkVoidFunction>(Self::debug_report_message_ext)},
7392
49
            },
7393
49
            VulkanCommand {
7394
49
                name: "vkDestroyDebugReportCallbackEXT",
7395
49
                features: smallvec![
Feature::Extension(Extension::EXTDebugReport)0
],
7396
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyDebugReportCallbackExt),
7397
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkDestroyDebugReportCallbackEXT, vk::PFN_vkVoidFunction>(Self::destroy_debug_report_callback_ext)},
7398
49
            },
7399
49
            VulkanCommand {
7400
49
                name: "vkDestroyDebugUtilsMessengerEXT",
7401
49
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
7402
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyDebugUtilsMessengerExt),
7403
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkDestroyDebugUtilsMessengerEXT, vk::PFN_vkVoidFunction>(Self::destroy_debug_utils_messenger_ext)},
7404
49
            },
7405
49
            VulkanCommand {
7406
49
                name: "vkDestroyInstance",
7407
49
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7408
                hooked: true,
7409
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkDestroyInstance, vk::PFN_vkVoidFunction>(Self::destroy_instance)},
7410
49
            },
7411
49
            VulkanCommand {
7412
49
                name: "vkDestroySurfaceKHR",
7413
49
                features: smallvec![
Feature::Extension(Extension::KHRSurface)0
],
7414
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroySurfaceKhr),
7415
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkDestroySurfaceKHR, vk::PFN_vkVoidFunction>(Self::destroy_surface_khr)},
7416
49
            },
7417
49
            VulkanCommand {
7418
49
                name: "vkEnumerateDeviceExtensionProperties",
7419
49
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7420
                hooked: true,
7421
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkEnumerateDeviceExtensionProperties, vk::PFN_vkVoidFunction>(Self::enumerate_device_extension_properties)},
7422
49
            },
7423
49
            VulkanCommand {
7424
49
                name: "vkEnumerateDeviceLayerProperties",
7425
49
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7426
                hooked: true,
7427
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkEnumerateDeviceLayerProperties, vk::PFN_vkVoidFunction>(Self::enumerate_device_layer_properties)},
7428
49
            },
7429
49
            VulkanCommand {
7430
49
                name: "vkEnumeratePhysicalDeviceGroups",
7431
49
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7432
                hooked: true,
7433
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkEnumeratePhysicalDeviceGroups, vk::PFN_vkVoidFunction>(Self::enumerate_physical_device_groups)},
7434
49
            },
7435
49
            VulkanCommand {
7436
49
                name: "vkEnumeratePhysicalDeviceGroupsKHR",
7437
49
                features: smallvec![
Feature::Extension(Extension::KHRDeviceGroupCreation)0
],
7438
                hooked: true,
7439
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkEnumeratePhysicalDeviceGroups, vk::PFN_vkVoidFunction>(Self::enumerate_physical_device_groups)},
7440
49
            },
7441
49
            VulkanCommand {
7442
49
                name: "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR",
7443
49
                features: smallvec![
Feature::Extension(Extension::KHRPerformanceQuery)0
],
7444
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKhr),
7445
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, vk::PFN_vkVoidFunction>(Self::enumerate_physical_device_queue_family_performance_query_counters_khr)},
7446
49
            },
7447
49
            VulkanCommand {
7448
49
                name: "vkEnumeratePhysicalDevices",
7449
49
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7450
                hooked: true,
7451
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkEnumeratePhysicalDevices, vk::PFN_vkVoidFunction>(Self::enumerate_physical_devices)},
7452
49
            },
7453
49
            VulkanCommand {
7454
49
                name: "vkGetDisplayModeProperties2KHR",
7455
49
                features: smallvec![
Feature::Extension(Extension::KHRGetDisplayProperties2)0
],
7456
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDisplayModeProperties2Khr),
7457
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetDisplayModeProperties2KHR, vk::PFN_vkVoidFunction>(Self::get_display_mode_properties2_khr)},
7458
49
            },
7459
49
            VulkanCommand {
7460
49
                name: "vkGetDisplayModePropertiesKHR",
7461
49
                features: smallvec![
Feature::Extension(Extension::KHRDisplay)0
],
7462
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDisplayModePropertiesKhr),
7463
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetDisplayModePropertiesKHR, vk::PFN_vkVoidFunction>(Self::get_display_mode_properties_khr)},
7464
49
            },
7465
49
            VulkanCommand {
7466
49
                name: "vkGetDisplayPlaneCapabilities2KHR",
7467
49
                features: smallvec![
Feature::Extension(Extension::KHRGetDisplayProperties2)0
],
7468
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDisplayPlaneCapabilities2Khr),
7469
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetDisplayPlaneCapabilities2KHR, vk::PFN_vkVoidFunction>(Self::get_display_plane_capabilities2_khr)},
7470
49
            },
7471
49
            VulkanCommand {
7472
49
                name: "vkGetDisplayPlaneCapabilitiesKHR",
7473
49
                features: smallvec![
Feature::Extension(Extension::KHRDisplay)0
],
7474
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDisplayPlaneCapabilitiesKhr),
7475
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetDisplayPlaneCapabilitiesKHR, vk::PFN_vkVoidFunction>(Self::get_display_plane_capabilities_khr)},
7476
49
            },
7477
49
            VulkanCommand {
7478
49
                name: "vkGetDisplayPlaneSupportedDisplaysKHR",
7479
49
                features: smallvec![
Feature::Extension(Extension::KHRDisplay)0
],
7480
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDisplayPlaneSupportedDisplaysKhr),
7481
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetDisplayPlaneSupportedDisplaysKHR, vk::PFN_vkVoidFunction>(Self::get_display_plane_supported_displays_khr)},
7482
49
            },
7483
49
            VulkanCommand {
7484
49
                name: "vkGetDrmDisplayEXT",
7485
49
                features: smallvec![
Feature::Extension(Extension::EXTAcquireDrmDisplay)0
],
7486
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDrmDisplayExt),
7487
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetDrmDisplayEXT, vk::PFN_vkVoidFunction>(Self::get_drm_display_ext)},
7488
49
            },
7489
49
            VulkanCommand {
7490
49
                name: "vkGetInstanceProcAddr",
7491
49
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7492
                hooked: true,
7493
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetInstanceProcAddr, vk::PFN_vkVoidFunction>(Self::get_instance_proc_addr)},
7494
49
            },
7495
49
            VulkanCommand {
7496
49
                name: "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT",
7497
49
                features: smallvec![
Feature::Extension(Extension::EXTCalibratedTimestamps)0
],
7498
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceCalibrateableTimeDomainsExt),
7499
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, vk::PFN_vkVoidFunction>(Self::get_physical_device_calibrateable_time_domains_ext)},
7500
49
            },
7501
49
            VulkanCommand {
7502
49
                name: "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV",
7503
49
                features: smallvec![
Feature::Extension(Extension::NVCooperativeMatrix)0
],
7504
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceCooperativeMatrixPropertiesNv),
7505
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, vk::PFN_vkVoidFunction>(Self::get_physical_device_cooperative_matrix_properties_nv)},
7506
49
            },
7507
49
            VulkanCommand {
7508
49
                name: "vkGetPhysicalDeviceDirectFBPresentationSupportEXT",
7509
49
                features: smallvec![
Feature::Extension(Extension::EXTDirectfbSurface)0
],
7510
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceDirectFbPresentationSupportExt),
7511
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT, vk::PFN_vkVoidFunction>(Self::get_physical_device_direct_fb_presentation_support_ext)},
7512
49
            },
7513
49
            VulkanCommand {
7514
49
                name: "vkGetPhysicalDeviceDisplayPlaneProperties2KHR",
7515
49
                features: smallvec![
Feature::Extension(Extension::KHRGetDisplayProperties2)0
],
7516
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceDisplayPlaneProperties2Khr),
7517
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_display_plane_properties2_khr)},
7518
49
            },
7519
49
            VulkanCommand {
7520
49
                name: "vkGetPhysicalDeviceDisplayPlanePropertiesKHR",
7521
49
                features: smallvec![
Feature::Extension(Extension::KHRDisplay)0
],
7522
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceDisplayPlanePropertiesKhr),
7523
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_display_plane_properties_khr)},
7524
49
            },
7525
49
            VulkanCommand {
7526
49
                name: "vkGetPhysicalDeviceDisplayProperties2KHR",
7527
49
                features: smallvec![
Feature::Extension(Extension::KHRGetDisplayProperties2)0
],
7528
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceDisplayProperties2Khr),
7529
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceDisplayProperties2KHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_display_properties2_khr)},
7530
49
            },
7531
49
            VulkanCommand {
7532
49
                name: "vkGetPhysicalDeviceDisplayPropertiesKHR",
7533
49
                features: smallvec![
Feature::Extension(Extension::KHRDisplay)0
],
7534
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceDisplayPropertiesKhr),
7535
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceDisplayPropertiesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_display_properties_khr)},
7536
49
            },
7537
49
            VulkanCommand {
7538
49
                name: "vkGetPhysicalDeviceExternalBufferProperties",
7539
49
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7540
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceExternalBufferProperties),
7541
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceExternalBufferProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_external_buffer_properties)},
7542
49
            },
7543
49
            VulkanCommand {
7544
49
                name: "vkGetPhysicalDeviceExternalBufferPropertiesKHR",
7545
49
                features: smallvec![
Feature::Extension(Extension::KHRExternalMemoryCapabilities)0
],
7546
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceExternalBufferProperties),
7547
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceExternalBufferProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_external_buffer_properties)},
7548
49
            },
7549
49
            VulkanCommand {
7550
49
                name: "vkGetPhysicalDeviceExternalFenceProperties",
7551
49
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7552
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceExternalFenceProperties),
7553
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceExternalFenceProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_external_fence_properties)},
7554
49
            },
7555
49
            VulkanCommand {
7556
49
                name: "vkGetPhysicalDeviceExternalFencePropertiesKHR",
7557
49
                features: smallvec![
Feature::Extension(Extension::KHRExternalFenceCapabilities)0
],
7558
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceExternalFenceProperties),
7559
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceExternalFenceProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_external_fence_properties)},
7560
49
            },
7561
49
            VulkanCommand {
7562
49
                name: "vkGetPhysicalDeviceExternalImageFormatPropertiesNV",
7563
49
                features: smallvec![
Feature::Extension(Extension::NVExternalMemoryCapabilities)0
],
7564
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceExternalImageFormatPropertiesNv),
7565
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, vk::PFN_vkVoidFunction>(Self::get_physical_device_external_image_format_properties_nv)},
7566
49
            },
7567
49
            VulkanCommand {
7568
49
                name: "vkGetPhysicalDeviceExternalSemaphoreProperties",
7569
49
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7570
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceExternalSemaphoreProperties),
7571
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceExternalSemaphoreProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_external_semaphore_properties)},
7572
49
            },
7573
49
            VulkanCommand {
7574
49
                name: "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR",
7575
49
                features: smallvec![
Feature::Extension(Extension::KHRExternalSemaphoreCapabilities)0
],
7576
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceExternalSemaphoreProperties),
7577
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceExternalSemaphoreProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_external_semaphore_properties)},
7578
49
            },
7579
49
            VulkanCommand {
7580
49
                name: "vkGetPhysicalDeviceFeatures",
7581
49
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7582
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceFeatures),
7583
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceFeatures, vk::PFN_vkVoidFunction>(Self::get_physical_device_features)},
7584
49
            },
7585
49
            VulkanCommand {
7586
49
                name: "vkGetPhysicalDeviceFeatures2",
7587
49
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7588
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceFeatures2),
7589
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceFeatures2, vk::PFN_vkVoidFunction>(Self::get_physical_device_features2)},
7590
49
            },
7591
49
            VulkanCommand {
7592
49
                name: "vkGetPhysicalDeviceFeatures2KHR",
7593
49
                features: smallvec![
Feature::Extension(Extension::KHRGetPhysicalDeviceProperties2)0
],
7594
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceFeatures2),
7595
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceFeatures2, vk::PFN_vkVoidFunction>(Self::get_physical_device_features2)},
7596
49
            },
7597
49
            VulkanCommand {
7598
49
                name: "vkGetPhysicalDeviceFormatProperties",
7599
49
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7600
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceFormatProperties),
7601
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceFormatProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_format_properties)},
7602
49
            },
7603
49
            VulkanCommand {
7604
49
                name: "vkGetPhysicalDeviceFormatProperties2",
7605
49
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7606
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceFormatProperties2),
7607
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceFormatProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_format_properties2)},
7608
49
            },
7609
49
            VulkanCommand {
7610
49
                name: "vkGetPhysicalDeviceFormatProperties2KHR",
7611
49
                features: smallvec![
Feature::Extension(Extension::KHRGetPhysicalDeviceProperties2)0
],
7612
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceFormatProperties2),
7613
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceFormatProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_format_properties2)},
7614
49
            },
7615
49
            VulkanCommand {
7616
49
                name: "vkGetPhysicalDeviceFragmentShadingRatesKHR",
7617
49
                features: smallvec![
Feature::Extension(Extension::KHRFragmentShadingRate)0
],
7618
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceFragmentShadingRatesKhr),
7619
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_fragment_shading_rates_khr)},
7620
49
            },
7621
49
            VulkanCommand {
7622
49
                name: "vkGetPhysicalDeviceImageFormatProperties",
7623
49
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7624
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceImageFormatProperties),
7625
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceImageFormatProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_image_format_properties)},
7626
49
            },
7627
49
            VulkanCommand {
7628
49
                name: "vkGetPhysicalDeviceImageFormatProperties2",
7629
49
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7630
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceImageFormatProperties2),
7631
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceImageFormatProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_image_format_properties2)},
7632
49
            },
7633
49
            VulkanCommand {
7634
49
                name: "vkGetPhysicalDeviceImageFormatProperties2KHR",
7635
49
                features: smallvec![
Feature::Extension(Extension::KHRGetPhysicalDeviceProperties2)0
],
7636
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceImageFormatProperties2),
7637
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceImageFormatProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_image_format_properties2)},
7638
49
            },
7639
49
            VulkanCommand {
7640
49
                name: "vkGetPhysicalDeviceMemoryProperties",
7641
49
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7642
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceMemoryProperties),
7643
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceMemoryProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_memory_properties)},
7644
49
            },
7645
49
            VulkanCommand {
7646
49
                name: "vkGetPhysicalDeviceMemoryProperties2",
7647
49
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7648
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceMemoryProperties2),
7649
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceMemoryProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_memory_properties2)},
7650
49
            },
7651
49
            VulkanCommand {
7652
49
                name: "vkGetPhysicalDeviceMemoryProperties2KHR",
7653
49
                features: smallvec![
Feature::Extension(Extension::KHRGetPhysicalDeviceProperties2)0
],
7654
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceMemoryProperties2),
7655
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceMemoryProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_memory_properties2)},
7656
49
            },
7657
49
            VulkanCommand {
7658
49
                name: "vkGetPhysicalDeviceMultisamplePropertiesEXT",
7659
49
                features: smallvec![
Feature::Extension(Extension::EXTSampleLocations)0
],
7660
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceMultisamplePropertiesExt),
7661
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT, vk::PFN_vkVoidFunction>(Self::get_physical_device_multisample_properties_ext)},
7662
49
            },
7663
49
            VulkanCommand {
7664
49
                name: "vkGetPhysicalDeviceOpticalFlowImageFormatsNV",
7665
49
                features: smallvec![
Feature::Extension(Extension::NVOpticalFlow)0
],
7666
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceOpticalFlowImageFormatsNv),
7667
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV, vk::PFN_vkVoidFunction>(Self::get_physical_device_optical_flow_image_formats_nv)},
7668
49
            },
7669
49
            VulkanCommand {
7670
49
                name: "vkGetPhysicalDevicePresentRectanglesKHR",
7671
49
                features: smallvec![
Feature::Extension(Extension::KHRSwapchain), Feature::Extension(Extension::KHRDeviceGroup)0
],
7672
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDevicePresentRectanglesKhr),
7673
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDevicePresentRectanglesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_present_rectangles_khr)},
7674
49
            },
7675
49
            VulkanCommand {
7676
49
                name: "vkGetPhysicalDeviceProperties",
7677
49
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7678
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceProperties),
7679
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_properties)},
7680
49
            },
7681
49
            VulkanCommand {
7682
49
                name: "vkGetPhysicalDeviceProperties2",
7683
49
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7684
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceProperties2),
7685
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_properties2)},
7686
49
            },
7687
49
            VulkanCommand {
7688
49
                name: "vkGetPhysicalDeviceProperties2KHR",
7689
49
                features: smallvec![
Feature::Extension(Extension::KHRGetPhysicalDeviceProperties2)0
],
7690
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceProperties2),
7691
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_properties2)},
7692
49
            },
7693
49
            VulkanCommand {
7694
49
                name: "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR",
7695
49
                features: smallvec![
Feature::Extension(Extension::KHRPerformanceQuery)0
],
7696
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKhr),
7697
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_queue_family_performance_query_passes_khr)},
7698
49
            },
7699
49
            VulkanCommand {
7700
49
                name: "vkGetPhysicalDeviceQueueFamilyProperties",
7701
49
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7702
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceQueueFamilyProperties),
7703
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceQueueFamilyProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_queue_family_properties)},
7704
49
            },
7705
49
            VulkanCommand {
7706
49
                name: "vkGetPhysicalDeviceQueueFamilyProperties2",
7707
49
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7708
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceQueueFamilyProperties2),
7709
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceQueueFamilyProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_queue_family_properties2)},
7710
49
            },
7711
49
            VulkanCommand {
7712
49
                name: "vkGetPhysicalDeviceQueueFamilyProperties2KHR",
7713
49
                features: smallvec![
Feature::Extension(Extension::KHRGetPhysicalDeviceProperties2)0
],
7714
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceQueueFamilyProperties2),
7715
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceQueueFamilyProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_queue_family_properties2)},
7716
49
            },
7717
49
            VulkanCommand {
7718
49
                name: "vkGetPhysicalDeviceScreenPresentationSupportQNX",
7719
49
                features: smallvec![
Feature::Extension(Extension::QNXScreenSurface)0
],
7720
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceScreenPresentationSupportQnx),
7721
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX, vk::PFN_vkVoidFunction>(Self::get_physical_device_screen_presentation_support_qnx)},
7722
49
            },
7723
49
            VulkanCommand {
7724
49
                name: "vkGetPhysicalDeviceSparseImageFormatProperties",
7725
49
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7726
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSparseImageFormatProperties),
7727
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSparseImageFormatProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_sparse_image_format_properties)},
7728
49
            },
7729
49
            VulkanCommand {
7730
49
                name: "vkGetPhysicalDeviceSparseImageFormatProperties2",
7731
49
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7732
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSparseImageFormatProperties2),
7733
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSparseImageFormatProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_sparse_image_format_properties2)},
7734
49
            },
7735
49
            VulkanCommand {
7736
49
                name: "vkGetPhysicalDeviceSparseImageFormatProperties2KHR",
7737
49
                features: smallvec![
Feature::Extension(Extension::KHRGetPhysicalDeviceProperties2)0
],
7738
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSparseImageFormatProperties2),
7739
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSparseImageFormatProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_sparse_image_format_properties2)},
7740
49
            },
7741
49
            VulkanCommand {
7742
49
                name: "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV",
7743
49
                features: smallvec![
Feature::Extension(Extension::NVCoverageReductionMode)0
],
7744
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNv),
7745
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, vk::PFN_vkVoidFunction>(Self::get_physical_device_supported_framebuffer_mixed_samples_combinations_nv)},
7746
49
            },
7747
49
            VulkanCommand {
7748
49
                name: "vkGetPhysicalDeviceSurfaceCapabilities2EXT",
7749
49
                features: smallvec![
Feature::Extension(Extension::EXTDisplaySurfaceCounter)0
],
7750
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSurfaceCapabilities2Ext),
7751
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT, vk::PFN_vkVoidFunction>(Self::get_physical_device_surface_capabilities2_ext)},
7752
49
            },
7753
49
            VulkanCommand {
7754
49
                name: "vkGetPhysicalDeviceSurfaceCapabilities2KHR",
7755
49
                features: smallvec![
Feature::Extension(Extension::KHRGetSurfaceCapabilities2)0
],
7756
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSurfaceCapabilities2Khr),
7757
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_surface_capabilities2_khr)},
7758
49
            },
7759
49
            VulkanCommand {
7760
49
                name: "vkGetPhysicalDeviceSurfaceCapabilitiesKHR",
7761
49
                features: smallvec![
Feature::Extension(Extension::KHRSurface)0
],
7762
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSurfaceCapabilitiesKhr),
7763
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_surface_capabilities_khr)},
7764
49
            },
7765
49
            VulkanCommand {
7766
49
                name: "vkGetPhysicalDeviceSurfaceFormats2KHR",
7767
49
                features: smallvec![
Feature::Extension(Extension::KHRGetSurfaceCapabilities2)0
],
7768
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSurfaceFormats2Khr),
7769
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSurfaceFormats2KHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_surface_formats2_khr)},
7770
49
            },
7771
49
            VulkanCommand {
7772
49
                name: "vkGetPhysicalDeviceSurfaceFormatsKHR",
7773
49
                features: smallvec![
Feature::Extension(Extension::KHRSurface)0
],
7774
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSurfaceFormatsKhr),
7775
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSurfaceFormatsKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_surface_formats_khr)},
7776
49
            },
7777
49
            VulkanCommand {
7778
49
                name: "vkGetPhysicalDeviceSurfacePresentModes2EXT",
7779
49
                features: smallvec![
Feature::Extension(Extension::EXTFullScreenExclusive)0
],
7780
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSurfacePresentModes2Ext),
7781
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT, vk::PFN_vkVoidFunction>(Self::get_physical_device_surface_present_modes2_ext)},
7782
49
            },
7783
49
            VulkanCommand {
7784
49
                name: "vkGetPhysicalDeviceSurfacePresentModesKHR",
7785
49
                features: smallvec![
Feature::Extension(Extension::KHRSurface)0
],
7786
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSurfacePresentModesKhr),
7787
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSurfacePresentModesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_surface_present_modes_khr)},
7788
49
            },
7789
49
            VulkanCommand {
7790
49
                name: "vkGetPhysicalDeviceSurfaceSupportKHR",
7791
49
                features: smallvec![
Feature::Extension(Extension::KHRSurface)0
],
7792
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSurfaceSupportKhr),
7793
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSurfaceSupportKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_surface_support_khr)},
7794
49
            },
7795
49
            VulkanCommand {
7796
49
                name: "vkGetPhysicalDeviceToolProperties",
7797
49
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3})0
],
7798
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceToolProperties),
7799
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceToolProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_tool_properties)},
7800
49
            },
7801
49
            VulkanCommand {
7802
49
                name: "vkGetPhysicalDeviceToolPropertiesEXT",
7803
49
                features: smallvec![
Feature::Extension(Extension::EXTToolingInfo)0
],
7804
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceToolProperties),
7805
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceToolProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_tool_properties)},
7806
49
            },
7807
49
            VulkanCommand {
7808
49
                name: "vkGetPhysicalDeviceVideoCapabilitiesKHR",
7809
49
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
7810
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceVideoCapabilitiesKhr),
7811
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_video_capabilities_khr)},
7812
49
            },
7813
49
            VulkanCommand {
7814
49
                name: "vkGetPhysicalDeviceVideoFormatPropertiesKHR",
7815
49
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
7816
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceVideoFormatPropertiesKhr),
7817
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_video_format_properties_khr)},
7818
49
            },
7819
49
            VulkanCommand {
7820
49
                name: "vkGetPhysicalDeviceWaylandPresentationSupportKHR",
7821
49
                features: smallvec![
Feature::Extension(Extension::KHRWaylandSurface)0
],
7822
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceWaylandPresentationSupportKhr),
7823
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_wayland_presentation_support_khr)},
7824
49
            },
7825
49
            VulkanCommand {
7826
49
                name: "vkGetPhysicalDeviceWin32PresentationSupportKHR",
7827
49
                features: smallvec![
Feature::Extension(Extension::KHRWin32Surface)0
],
7828
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceWin32PresentationSupportKhr),
7829
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_win32_presentation_support_khr)},
7830
49
            },
7831
49
            VulkanCommand {
7832
49
                name: "vkGetPhysicalDeviceXcbPresentationSupportKHR",
7833
49
                features: smallvec![
Feature::Extension(Extension::KHRXcbSurface)0
],
7834
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceXcbPresentationSupportKhr),
7835
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_xcb_presentation_support_khr)},
7836
49
            },
7837
49
            VulkanCommand {
7838
49
                name: "vkGetPhysicalDeviceXlibPresentationSupportKHR",
7839
49
                features: smallvec![
Feature::Extension(Extension::KHRXlibSurface)0
],
7840
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceXlibPresentationSupportKhr),
7841
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_xlib_presentation_support_khr)},
7842
49
            },
7843
49
            VulkanCommand {
7844
49
                name: "vkGetRandROutputDisplayEXT",
7845
49
                features: smallvec![
Feature::Extension(Extension::EXTAcquireXlibDisplay)0
],
7846
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetRandROutputDisplayExt),
7847
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetRandROutputDisplayEXT, vk::PFN_vkVoidFunction>(Self::get_rand_r_output_display_ext)},
7848
49
            },
7849
49
            VulkanCommand {
7850
49
                name: "vkGetWinrtDisplayNV",
7851
49
                features: smallvec![
Feature::Extension(Extension::NVAcquireWinrtDisplay)0
],
7852
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetWinrtDisplayNv),
7853
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetWinrtDisplayNV, vk::PFN_vkVoidFunction>(Self::get_winrt_display_nv)},
7854
49
            },
7855
49
            VulkanCommand {
7856
49
                name: "vkReleaseDisplayEXT",
7857
49
                features: smallvec![
Feature::Extension(Extension::EXTDirectModeDisplay)0
],
7858
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::ReleaseDisplayExt),
7859
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkReleaseDisplayEXT, vk::PFN_vkVoidFunction>(Self::release_display_ext)},
7860
49
            },
7861
49
            VulkanCommand {
7862
49
                name: "vkSubmitDebugUtilsMessageEXT",
7863
49
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
7864
49
                hooked: hooked_commands.contains(&LayerVulkanCommand::SubmitDebugUtilsMessageExt),
7865
49
                proc: unsafe { std::mem::transmute::<vk::PFN_vkSubmitDebugUtilsMessageEXT, vk::PFN_vkVoidFunction>(Self::submit_debug_utils_message_ext)},
7866
49
            },
7867
49
        ])
7868
49
    }
7869
0
    extern "system" fn get_physical_device_features(
7870
0
        physical_device: vk::PhysicalDevice,
7871
0
        p_features: *mut vk::PhysicalDeviceFeatures,
7872
0
    ) {
7873
0
        let global = Self::instance();
7874
0
        // vkGetPhysicalDeviceFeatures
7875
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
7876
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_0();
7877
0
        let layer_result = instance_info
7878
0
            .customized_info
7879
0
            .borrow()
7880
0
            .hooks()
7881
0
            .get_physical_device_features(
7882
0
                physical_device,
7883
0
                unsafe { ptr_as_uninit_mut(p_features) }.unwrap(),
7884
0
            );
7885
0
        match layer_result {
7886
0
            LayerResult::Handled(res) => res,
7887
            LayerResult::Unhandled => unsafe {
7888
0
                (dispatch_table.get_physical_device_features)(physical_device, p_features)
7889
            },
7890
        }
7891
0
    }
7892
0
    extern "system" fn get_physical_device_format_properties(
7893
0
        physical_device: vk::PhysicalDevice,
7894
0
        format: vk::Format,
7895
0
        p_format_properties: *mut vk::FormatProperties,
7896
0
    ) {
7897
0
        let global = Self::instance();
7898
0
        // vkGetPhysicalDeviceFormatProperties
7899
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
7900
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_0();
7901
0
        let layer_result = instance_info
7902
0
            .customized_info
7903
0
            .borrow()
7904
0
            .hooks()
7905
0
            .get_physical_device_format_properties(
7906
0
                physical_device,
7907
0
                format,
7908
0
                unsafe { ptr_as_uninit_mut(p_format_properties) }.unwrap(),
7909
0
            );
7910
0
        match layer_result {
7911
0
            LayerResult::Handled(res) => res,
7912
            LayerResult::Unhandled => unsafe {
7913
0
                (dispatch_table.get_physical_device_format_properties)(
7914
0
                    physical_device,
7915
0
                    format,
7916
0
                    p_format_properties,
7917
0
                )
7918
            },
7919
        }
7920
0
    }
7921
0
    extern "system" fn get_physical_device_image_format_properties(
7922
0
        physical_device: vk::PhysicalDevice,
7923
0
        format: vk::Format,
7924
0
        _type: vk::ImageType,
7925
0
        tiling: vk::ImageTiling,
7926
0
        usage: vk::ImageUsageFlags,
7927
0
        flags: vk::ImageCreateFlags,
7928
0
        p_image_format_properties: *mut vk::ImageFormatProperties,
7929
0
    ) -> vk::Result {
7930
0
        let global = Self::instance();
7931
0
        // vkGetPhysicalDeviceImageFormatProperties
7932
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
7933
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_0();
7934
0
        let layer_result = instance_info
7935
0
            .customized_info
7936
0
            .borrow()
7937
0
            .hooks()
7938
0
            .get_physical_device_image_format_properties(
7939
0
                physical_device,
7940
0
                format,
7941
0
                _type,
7942
0
                tiling,
7943
0
                usage,
7944
0
                flags,
7945
0
                unsafe { ptr_as_uninit_mut(p_image_format_properties) }.unwrap(),
7946
0
            );
7947
0
        match layer_result {
7948
0
            LayerResult::Handled(res) => match res {
7949
0
                Ok(()) => vk::Result::SUCCESS,
7950
0
                Err(e) => e,
7951
            },
7952
            LayerResult::Unhandled => unsafe {
7953
0
                (dispatch_table.get_physical_device_image_format_properties)(
7954
0
                    physical_device,
7955
0
                    format,
7956
0
                    _type,
7957
0
                    tiling,
7958
0
                    usage,
7959
0
                    flags,
7960
0
                    p_image_format_properties,
7961
0
                )
7962
            },
7963
        }
7964
0
    }
7965
0
    extern "system" fn get_physical_device_properties(
7966
0
        physical_device: vk::PhysicalDevice,
7967
0
        p_properties: *mut vk::PhysicalDeviceProperties,
7968
0
    ) {
7969
0
        let global = Self::instance();
7970
0
        // vkGetPhysicalDeviceProperties
7971
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
7972
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_0();
7973
0
        let layer_result = instance_info
7974
0
            .customized_info
7975
0
            .borrow()
7976
0
            .hooks()
7977
0
            .get_physical_device_properties(
7978
0
                physical_device,
7979
0
                unsafe { ptr_as_uninit_mut(p_properties) }.unwrap(),
7980
0
            );
7981
0
        match layer_result {
7982
0
            LayerResult::Handled(res) => res,
7983
            LayerResult::Unhandled => unsafe {
7984
0
                (dispatch_table.get_physical_device_properties)(physical_device, p_properties)
7985
            },
7986
        }
7987
0
    }
7988
0
    extern "system" fn get_physical_device_queue_family_properties(
7989
0
        physical_device: vk::PhysicalDevice,
7990
0
        p_queue_family_property_count: *mut u32,
7991
0
        p_queue_family_properties: *mut vk::QueueFamilyProperties,
7992
0
    ) {
7993
0
        let global = Self::instance();
7994
0
        // vkGetPhysicalDeviceQueueFamilyProperties
7995
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
7996
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_0();
7997
0
        let layer_result = instance_info
7998
0
            .customized_info
7999
0
            .borrow()
8000
0
            .hooks()
8001
0
            .get_physical_device_queue_family_properties(
8002
0
                physical_device,
8003
0
                unsafe { ptr_as_uninit_mut(p_queue_family_property_count) }.unwrap(),
8004
0
                unsafe {
8005
0
                    maybe_uninit_slice_from_raw_parts_mut(
8006
0
                        p_queue_family_properties,
8007
0
                        p_queue_family_property_count,
8008
0
                    )
8009
0
                },
8010
0
            );
8011
0
        match layer_result {
8012
0
            LayerResult::Handled(res) => res,
8013
            LayerResult::Unhandled => unsafe {
8014
0
                (dispatch_table.get_physical_device_queue_family_properties)(
8015
0
                    physical_device,
8016
0
                    p_queue_family_property_count,
8017
0
                    p_queue_family_properties,
8018
0
                )
8019
            },
8020
        }
8021
0
    }
8022
0
    extern "system" fn get_physical_device_memory_properties(
8023
0
        physical_device: vk::PhysicalDevice,
8024
0
        p_memory_properties: *mut vk::PhysicalDeviceMemoryProperties,
8025
0
    ) {
8026
0
        let global = Self::instance();
8027
0
        // vkGetPhysicalDeviceMemoryProperties
8028
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8029
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_0();
8030
0
        let layer_result = instance_info
8031
0
            .customized_info
8032
0
            .borrow()
8033
0
            .hooks()
8034
0
            .get_physical_device_memory_properties(
8035
0
                physical_device,
8036
0
                unsafe { ptr_as_uninit_mut(p_memory_properties) }.unwrap(),
8037
0
            );
8038
0
        match layer_result {
8039
0
            LayerResult::Handled(res) => res,
8040
            LayerResult::Unhandled => unsafe {
8041
0
                (dispatch_table.get_physical_device_memory_properties)(
8042
0
                    physical_device,
8043
0
                    p_memory_properties,
8044
0
                )
8045
            },
8046
        }
8047
0
    }
8048
0
    extern "system" fn get_physical_device_sparse_image_format_properties(
8049
0
        physical_device: vk::PhysicalDevice,
8050
0
        format: vk::Format,
8051
0
        _type: vk::ImageType,
8052
0
        samples: vk::SampleCountFlags,
8053
0
        usage: vk::ImageUsageFlags,
8054
0
        tiling: vk::ImageTiling,
8055
0
        p_property_count: *mut u32,
8056
0
        p_properties: *mut vk::SparseImageFormatProperties,
8057
0
    ) {
8058
0
        let global = Self::instance();
8059
0
        // vkGetPhysicalDeviceSparseImageFormatProperties
8060
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8061
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_0();
8062
0
        let layer_result = instance_info
8063
0
            .customized_info
8064
0
            .borrow()
8065
0
            .hooks()
8066
0
            .get_physical_device_sparse_image_format_properties(
8067
0
                physical_device,
8068
0
                format,
8069
0
                _type,
8070
0
                samples,
8071
0
                usage,
8072
0
                tiling,
8073
0
                unsafe { ptr_as_uninit_mut(p_property_count) }.unwrap(),
8074
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_properties, p_property_count) },
8075
0
            );
8076
0
        match layer_result {
8077
0
            LayerResult::Handled(res) => res,
8078
            LayerResult::Unhandled => unsafe {
8079
0
                (dispatch_table.get_physical_device_sparse_image_format_properties)(
8080
0
                    physical_device,
8081
0
                    format,
8082
0
                    _type,
8083
0
                    samples,
8084
0
                    usage,
8085
0
                    tiling,
8086
0
                    p_property_count,
8087
0
                    p_properties,
8088
0
                )
8089
            },
8090
        }
8091
0
    }
8092
0
    extern "system" fn get_physical_device_features2(
8093
0
        physical_device: vk::PhysicalDevice,
8094
0
        p_features: *mut vk::PhysicalDeviceFeatures2,
8095
0
    ) {
8096
0
        let global = Self::instance();
8097
0
        // vkGetPhysicalDeviceFeatures2
8098
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8099
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8100
0
        let layer_result = instance_info
8101
0
            .customized_info
8102
0
            .borrow()
8103
0
            .hooks()
8104
0
            .get_physical_device_features2(
8105
0
                physical_device,
8106
0
                unsafe { ptr_as_uninit_mut(p_features) }.unwrap(),
8107
0
            );
8108
0
        match layer_result {
8109
0
            LayerResult::Handled(res) => res,
8110
            LayerResult::Unhandled => unsafe {
8111
0
                (dispatch_table.get_physical_device_features2)(physical_device, p_features)
8112
            },
8113
        }
8114
0
    }
8115
0
    extern "system" fn get_physical_device_properties2(
8116
0
        physical_device: vk::PhysicalDevice,
8117
0
        p_properties: *mut vk::PhysicalDeviceProperties2,
8118
0
    ) {
8119
0
        let global = Self::instance();
8120
0
        // vkGetPhysicalDeviceProperties2
8121
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8122
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8123
0
        let layer_result = instance_info
8124
0
            .customized_info
8125
0
            .borrow()
8126
0
            .hooks()
8127
0
            .get_physical_device_properties2(
8128
0
                physical_device,
8129
0
                unsafe { ptr_as_uninit_mut(p_properties) }.unwrap(),
8130
0
            );
8131
0
        match layer_result {
8132
0
            LayerResult::Handled(res) => res,
8133
            LayerResult::Unhandled => unsafe {
8134
0
                (dispatch_table.get_physical_device_properties2)(physical_device, p_properties)
8135
            },
8136
        }
8137
0
    }
8138
0
    extern "system" fn get_physical_device_format_properties2(
8139
0
        physical_device: vk::PhysicalDevice,
8140
0
        format: vk::Format,
8141
0
        p_format_properties: *mut vk::FormatProperties2,
8142
0
    ) {
8143
0
        let global = Self::instance();
8144
0
        // vkGetPhysicalDeviceFormatProperties2
8145
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8146
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8147
0
        let layer_result = instance_info
8148
0
            .customized_info
8149
0
            .borrow()
8150
0
            .hooks()
8151
0
            .get_physical_device_format_properties2(
8152
0
                physical_device,
8153
0
                format,
8154
0
                unsafe { ptr_as_uninit_mut(p_format_properties) }.unwrap(),
8155
0
            );
8156
0
        match layer_result {
8157
0
            LayerResult::Handled(res) => res,
8158
            LayerResult::Unhandled => unsafe {
8159
0
                (dispatch_table.get_physical_device_format_properties2)(
8160
0
                    physical_device,
8161
0
                    format,
8162
0
                    p_format_properties,
8163
0
                )
8164
            },
8165
        }
8166
0
    }
8167
0
    extern "system" fn get_physical_device_image_format_properties2(
8168
0
        physical_device: vk::PhysicalDevice,
8169
0
        p_image_format_info: *const vk::PhysicalDeviceImageFormatInfo2,
8170
0
        p_image_format_properties: *mut vk::ImageFormatProperties2,
8171
0
    ) -> vk::Result {
8172
0
        let global = Self::instance();
8173
0
        // vkGetPhysicalDeviceImageFormatProperties2
8174
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8175
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8176
0
        let layer_result = instance_info
8177
0
            .customized_info
8178
0
            .borrow()
8179
0
            .hooks()
8180
0
            .get_physical_device_image_format_properties2(
8181
0
                physical_device,
8182
0
                unsafe { p_image_format_info.as_ref() }.unwrap(),
8183
0
                unsafe { ptr_as_uninit_mut(p_image_format_properties) }.unwrap(),
8184
0
            );
8185
0
        match layer_result {
8186
0
            LayerResult::Handled(res) => match res {
8187
0
                Ok(()) => vk::Result::SUCCESS,
8188
0
                Err(e) => e,
8189
            },
8190
            LayerResult::Unhandled => unsafe {
8191
0
                (dispatch_table.get_physical_device_image_format_properties2)(
8192
0
                    physical_device,
8193
0
                    p_image_format_info,
8194
0
                    p_image_format_properties,
8195
0
                )
8196
            },
8197
        }
8198
0
    }
8199
0
    extern "system" fn get_physical_device_queue_family_properties2(
8200
0
        physical_device: vk::PhysicalDevice,
8201
0
        p_queue_family_property_count: *mut u32,
8202
0
        p_queue_family_properties: *mut vk::QueueFamilyProperties2,
8203
0
    ) {
8204
0
        let global = Self::instance();
8205
0
        // vkGetPhysicalDeviceQueueFamilyProperties2
8206
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8207
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8208
0
        let layer_result = instance_info
8209
0
            .customized_info
8210
0
            .borrow()
8211
0
            .hooks()
8212
0
            .get_physical_device_queue_family_properties2(
8213
0
                physical_device,
8214
0
                unsafe { ptr_as_uninit_mut(p_queue_family_property_count) }.unwrap(),
8215
0
                unsafe {
8216
0
                    maybe_uninit_slice_from_raw_parts_mut(
8217
0
                        p_queue_family_properties,
8218
0
                        p_queue_family_property_count,
8219
0
                    )
8220
0
                },
8221
0
            );
8222
0
        match layer_result {
8223
0
            LayerResult::Handled(res) => res,
8224
            LayerResult::Unhandled => unsafe {
8225
0
                (dispatch_table.get_physical_device_queue_family_properties2)(
8226
0
                    physical_device,
8227
0
                    p_queue_family_property_count,
8228
0
                    p_queue_family_properties,
8229
0
                )
8230
            },
8231
        }
8232
0
    }
8233
0
    extern "system" fn get_physical_device_memory_properties2(
8234
0
        physical_device: vk::PhysicalDevice,
8235
0
        p_memory_properties: *mut vk::PhysicalDeviceMemoryProperties2,
8236
0
    ) {
8237
0
        let global = Self::instance();
8238
0
        // vkGetPhysicalDeviceMemoryProperties2
8239
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8240
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8241
0
        let layer_result = instance_info
8242
0
            .customized_info
8243
0
            .borrow()
8244
0
            .hooks()
8245
0
            .get_physical_device_memory_properties2(
8246
0
                physical_device,
8247
0
                unsafe { ptr_as_uninit_mut(p_memory_properties) }.unwrap(),
8248
0
            );
8249
0
        match layer_result {
8250
0
            LayerResult::Handled(res) => res,
8251
            LayerResult::Unhandled => unsafe {
8252
0
                (dispatch_table.get_physical_device_memory_properties2)(
8253
0
                    physical_device,
8254
0
                    p_memory_properties,
8255
0
                )
8256
            },
8257
        }
8258
0
    }
8259
0
    extern "system" fn get_physical_device_sparse_image_format_properties2(
8260
0
        physical_device: vk::PhysicalDevice,
8261
0
        p_format_info: *const vk::PhysicalDeviceSparseImageFormatInfo2,
8262
0
        p_property_count: *mut u32,
8263
0
        p_properties: *mut vk::SparseImageFormatProperties2,
8264
0
    ) {
8265
0
        let global = Self::instance();
8266
0
        // vkGetPhysicalDeviceSparseImageFormatProperties2
8267
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8268
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8269
0
        let layer_result = instance_info
8270
0
            .customized_info
8271
0
            .borrow()
8272
0
            .hooks()
8273
0
            .get_physical_device_sparse_image_format_properties2(
8274
0
                physical_device,
8275
0
                unsafe { p_format_info.as_ref() }.unwrap(),
8276
0
                unsafe { ptr_as_uninit_mut(p_property_count) }.unwrap(),
8277
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_properties, p_property_count) },
8278
0
            );
8279
0
        match layer_result {
8280
0
            LayerResult::Handled(res) => res,
8281
            LayerResult::Unhandled => unsafe {
8282
0
                (dispatch_table.get_physical_device_sparse_image_format_properties2)(
8283
0
                    physical_device,
8284
0
                    p_format_info,
8285
0
                    p_property_count,
8286
0
                    p_properties,
8287
0
                )
8288
            },
8289
        }
8290
0
    }
8291
0
    extern "system" fn get_physical_device_external_buffer_properties(
8292
0
        physical_device: vk::PhysicalDevice,
8293
0
        p_external_buffer_info: *const vk::PhysicalDeviceExternalBufferInfo,
8294
0
        p_external_buffer_properties: *mut vk::ExternalBufferProperties,
8295
0
    ) {
8296
0
        let global = Self::instance();
8297
0
        // vkGetPhysicalDeviceExternalBufferProperties
8298
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8299
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8300
0
        let layer_result = instance_info
8301
0
            .customized_info
8302
0
            .borrow()
8303
0
            .hooks()
8304
0
            .get_physical_device_external_buffer_properties(
8305
0
                physical_device,
8306
0
                unsafe { p_external_buffer_info.as_ref() }.unwrap(),
8307
0
                unsafe { ptr_as_uninit_mut(p_external_buffer_properties) }.unwrap(),
8308
0
            );
8309
0
        match layer_result {
8310
0
            LayerResult::Handled(res) => res,
8311
            LayerResult::Unhandled => unsafe {
8312
0
                (dispatch_table.get_physical_device_external_buffer_properties)(
8313
0
                    physical_device,
8314
0
                    p_external_buffer_info,
8315
0
                    p_external_buffer_properties,
8316
0
                )
8317
            },
8318
        }
8319
0
    }
8320
0
    extern "system" fn get_physical_device_external_fence_properties(
8321
0
        physical_device: vk::PhysicalDevice,
8322
0
        p_external_fence_info: *const vk::PhysicalDeviceExternalFenceInfo,
8323
0
        p_external_fence_properties: *mut vk::ExternalFenceProperties,
8324
0
    ) {
8325
0
        let global = Self::instance();
8326
0
        // vkGetPhysicalDeviceExternalFenceProperties
8327
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8328
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8329
0
        let layer_result = instance_info
8330
0
            .customized_info
8331
0
            .borrow()
8332
0
            .hooks()
8333
0
            .get_physical_device_external_fence_properties(
8334
0
                physical_device,
8335
0
                unsafe { p_external_fence_info.as_ref() }.unwrap(),
8336
0
                unsafe { ptr_as_uninit_mut(p_external_fence_properties) }.unwrap(),
8337
0
            );
8338
0
        match layer_result {
8339
0
            LayerResult::Handled(res) => res,
8340
            LayerResult::Unhandled => unsafe {
8341
0
                (dispatch_table.get_physical_device_external_fence_properties)(
8342
0
                    physical_device,
8343
0
                    p_external_fence_info,
8344
0
                    p_external_fence_properties,
8345
0
                )
8346
            },
8347
        }
8348
0
    }
8349
0
    extern "system" fn get_physical_device_external_semaphore_properties(
8350
0
        physical_device: vk::PhysicalDevice,
8351
0
        p_external_semaphore_info: *const vk::PhysicalDeviceExternalSemaphoreInfo,
8352
0
        p_external_semaphore_properties: *mut vk::ExternalSemaphoreProperties,
8353
0
    ) {
8354
0
        let global = Self::instance();
8355
0
        // vkGetPhysicalDeviceExternalSemaphoreProperties
8356
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8357
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8358
0
        let layer_result = instance_info
8359
0
            .customized_info
8360
0
            .borrow()
8361
0
            .hooks()
8362
0
            .get_physical_device_external_semaphore_properties(
8363
0
                physical_device,
8364
0
                unsafe { p_external_semaphore_info.as_ref() }.unwrap(),
8365
0
                unsafe { ptr_as_uninit_mut(p_external_semaphore_properties) }.unwrap(),
8366
0
            );
8367
0
        match layer_result {
8368
0
            LayerResult::Handled(res) => res,
8369
            LayerResult::Unhandled => unsafe {
8370
0
                (dispatch_table.get_physical_device_external_semaphore_properties)(
8371
0
                    physical_device,
8372
0
                    p_external_semaphore_info,
8373
0
                    p_external_semaphore_properties,
8374
0
                )
8375
            },
8376
        }
8377
0
    }
8378
0
    extern "system" fn get_physical_device_tool_properties(
8379
0
        physical_device: vk::PhysicalDevice,
8380
0
        p_tool_count: *mut u32,
8381
0
        p_tool_properties: *mut vk::PhysicalDeviceToolProperties,
8382
0
    ) -> vk::Result {
8383
0
        let global = Self::instance();
8384
0
        // vkGetPhysicalDeviceToolProperties
8385
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8386
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_3();
8387
0
        let layer_result = instance_info
8388
0
            .customized_info
8389
0
            .borrow()
8390
0
            .hooks()
8391
0
            .get_physical_device_tool_properties(
8392
0
                physical_device,
8393
0
                unsafe { ptr_as_uninit_mut(p_tool_count) }.unwrap(),
8394
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_tool_properties, p_tool_count) },
8395
0
            );
8396
0
        match layer_result {
8397
0
            LayerResult::Handled(res) => match res {
8398
0
                Ok(()) => vk::Result::SUCCESS,
8399
0
                Err(e) => e,
8400
            },
8401
            LayerResult::Unhandled => unsafe {
8402
0
                (dispatch_table.get_physical_device_tool_properties)(
8403
0
                    physical_device,
8404
0
                    p_tool_count,
8405
0
                    p_tool_properties,
8406
0
                )
8407
            },
8408
        }
8409
0
    }
8410
1
    extern "system" fn destroy_surface_khr(
8411
1
        instance: vk::Instance,
8412
1
        surface: vk::SurfaceKHR,
8413
1
        p_allocator: *const vk::AllocationCallbacks,
8414
1
    ) {
8415
1
        let global = Self::instance();
8416
1
        // vkDestroySurfaceKHR
8417
1
        let instance_info = global.get_instance_info(instance).unwrap();
8418
1
        let dispatch_table = &instance_info.dispatch_table.khr_surface;
8419
1
        let layer_result = instance_info
8420
1
            .customized_info
8421
1
            .borrow()
8422
1
            .hooks()
8423
1
            .destroy_surface_khr(surface, unsafe { p_allocator.as_ref() });
8424
1
        match layer_result {
8425
0
            LayerResult::Handled(res) => res,
8426
            LayerResult::Unhandled => unsafe {
8427
1
                (dispatch_table.destroy_surface_khr)(instance, surface, p_allocator)
8428
            },
8429
        }
8430
1
    }
8431
0
    extern "system" fn get_physical_device_surface_support_khr(
8432
0
        physical_device: vk::PhysicalDevice,
8433
0
        queue_family_index: u32,
8434
0
        surface: vk::SurfaceKHR,
8435
0
        p_supported: *mut vk::Bool32,
8436
0
    ) -> vk::Result {
8437
0
        let global = Self::instance();
8438
0
        // vkGetPhysicalDeviceSurfaceSupportKHR
8439
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8440
0
        let dispatch_table = &instance_info.dispatch_table.khr_surface;
8441
0
        let layer_result = instance_info
8442
0
            .customized_info
8443
0
            .borrow()
8444
0
            .hooks()
8445
0
            .get_physical_device_surface_support_khr(physical_device, queue_family_index, surface);
8446
0
        match layer_result {
8447
0
            LayerResult::Handled(res) => match res {
8448
0
                Ok(res) => {
8449
0
                    *unsafe { p_supported.as_mut() }.unwrap() =
8450
0
                        if res { vk::TRUE } else { vk::FALSE };
8451
0
                    vk::Result::SUCCESS
8452
                }
8453
0
                Err(e) => e,
8454
            },
8455
            LayerResult::Unhandled => unsafe {
8456
0
                (dispatch_table.get_physical_device_surface_support_khr)(
8457
0
                    physical_device,
8458
0
                    queue_family_index,
8459
0
                    surface,
8460
0
                    p_supported,
8461
0
                )
8462
            },
8463
        }
8464
0
    }
8465
0
    extern "system" fn get_physical_device_surface_capabilities_khr(
8466
0
        physical_device: vk::PhysicalDevice,
8467
0
        surface: vk::SurfaceKHR,
8468
0
        p_surface_capabilities: *mut vk::SurfaceCapabilitiesKHR,
8469
0
    ) -> vk::Result {
8470
0
        let global = Self::instance();
8471
0
        // vkGetPhysicalDeviceSurfaceCapabilitiesKHR
8472
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8473
0
        let dispatch_table = &instance_info.dispatch_table.khr_surface;
8474
0
        let layer_result = instance_info
8475
0
            .customized_info
8476
0
            .borrow()
8477
0
            .hooks()
8478
0
            .get_physical_device_surface_capabilities_khr(
8479
0
                physical_device,
8480
0
                surface,
8481
0
                unsafe { ptr_as_uninit_mut(p_surface_capabilities) }.unwrap(),
8482
0
            );
8483
0
        match layer_result {
8484
0
            LayerResult::Handled(res) => match res {
8485
0
                Ok(()) => vk::Result::SUCCESS,
8486
0
                Err(e) => e,
8487
            },
8488
            LayerResult::Unhandled => unsafe {
8489
0
                (dispatch_table.get_physical_device_surface_capabilities_khr)(
8490
0
                    physical_device,
8491
0
                    surface,
8492
0
                    p_surface_capabilities,
8493
0
                )
8494
            },
8495
        }
8496
0
    }
8497
0
    extern "system" fn get_physical_device_surface_formats_khr(
8498
0
        physical_device: vk::PhysicalDevice,
8499
0
        surface: vk::SurfaceKHR,
8500
0
        p_surface_format_count: *mut u32,
8501
0
        p_surface_formats: *mut vk::SurfaceFormatKHR,
8502
0
    ) -> vk::Result {
8503
0
        let global = Self::instance();
8504
0
        // vkGetPhysicalDeviceSurfaceFormatsKHR
8505
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8506
0
        let dispatch_table = &instance_info.dispatch_table.khr_surface;
8507
0
        let layer_result = instance_info
8508
0
            .customized_info
8509
0
            .borrow()
8510
0
            .hooks()
8511
0
            .get_physical_device_surface_formats_khr(
8512
0
                physical_device,
8513
0
                surface,
8514
0
                unsafe { ptr_as_uninit_mut(p_surface_format_count) }.unwrap(),
8515
0
                unsafe {
8516
0
                    maybe_uninit_slice_from_raw_parts_mut(p_surface_formats, p_surface_format_count)
8517
0
                },
8518
0
            );
8519
0
        match layer_result {
8520
0
            LayerResult::Handled(res) => match res {
8521
0
                Ok(()) => vk::Result::SUCCESS,
8522
0
                Err(e) => e,
8523
            },
8524
            LayerResult::Unhandled => unsafe {
8525
0
                (dispatch_table.get_physical_device_surface_formats_khr)(
8526
0
                    physical_device,
8527
0
                    surface,
8528
0
                    p_surface_format_count,
8529
0
                    p_surface_formats,
8530
0
                )
8531
            },
8532
        }
8533
0
    }
8534
0
    extern "system" fn get_physical_device_surface_present_modes_khr(
8535
0
        physical_device: vk::PhysicalDevice,
8536
0
        surface: vk::SurfaceKHR,
8537
0
        p_present_mode_count: *mut u32,
8538
0
        p_present_modes: *mut vk::PresentModeKHR,
8539
0
    ) -> vk::Result {
8540
0
        let global = Self::instance();
8541
0
        // vkGetPhysicalDeviceSurfacePresentModesKHR
8542
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8543
0
        let dispatch_table = &instance_info.dispatch_table.khr_surface;
8544
0
        let layer_result = instance_info
8545
0
            .customized_info
8546
0
            .borrow()
8547
0
            .hooks()
8548
0
            .get_physical_device_surface_present_modes_khr(physical_device, surface);
8549
0
        match layer_result {
8550
0
            LayerResult::Handled(res) => match res {
8551
0
                Ok(res) => unsafe {
8552
0
                    fill_vk_out_array(
8553
0
                        &res,
8554
0
                        NonNull::new(p_present_mode_count).unwrap(),
8555
0
                        p_present_modes,
8556
0
                    )
8557
                },
8558
0
                Err(e) => e,
8559
            },
8560
            LayerResult::Unhandled => unsafe {
8561
0
                (dispatch_table.get_physical_device_surface_present_modes_khr)(
8562
0
                    physical_device,
8563
0
                    surface,
8564
0
                    p_present_mode_count,
8565
0
                    p_present_modes,
8566
0
                )
8567
            },
8568
        }
8569
0
    }
8570
0
    extern "system" fn get_physical_device_present_rectangles_khr(
8571
0
        physical_device: vk::PhysicalDevice,
8572
0
        surface: vk::SurfaceKHR,
8573
0
        p_rect_count: *mut u32,
8574
0
        p_rects: *mut vk::Rect2D,
8575
0
    ) -> vk::Result {
8576
0
        let global = Self::instance();
8577
0
        // vkGetPhysicalDevicePresentRectanglesKHR
8578
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8579
0
        let dispatch_table = &instance_info.dispatch_table.khr_swapchain;
8580
0
        let layer_result = instance_info
8581
0
            .customized_info
8582
0
            .borrow()
8583
0
            .hooks()
8584
0
            .get_physical_device_present_rectangles_khr(
8585
0
                physical_device,
8586
0
                surface,
8587
0
                unsafe { ptr_as_uninit_mut(p_rect_count) }.unwrap(),
8588
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_rects, p_rect_count) },
8589
0
            );
8590
0
        match layer_result {
8591
0
            LayerResult::Handled(res) => match res {
8592
0
                Ok(()) => vk::Result::SUCCESS,
8593
0
                Err(e) => e,
8594
            },
8595
            LayerResult::Unhandled => unsafe {
8596
0
                (dispatch_table.get_physical_device_present_rectangles_khr)(
8597
0
                    physical_device,
8598
0
                    surface,
8599
0
                    p_rect_count,
8600
0
                    p_rects,
8601
0
                )
8602
            },
8603
        }
8604
0
    }
8605
0
    extern "system" fn get_physical_device_display_properties_khr(
8606
0
        physical_device: vk::PhysicalDevice,
8607
0
        p_property_count: *mut u32,
8608
0
        p_properties: *mut vk::DisplayPropertiesKHR,
8609
0
    ) -> vk::Result {
8610
0
        let global = Self::instance();
8611
0
        // vkGetPhysicalDeviceDisplayPropertiesKHR
8612
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8613
0
        let dispatch_table = &instance_info.dispatch_table.khr_display;
8614
0
        let layer_result = instance_info
8615
0
            .customized_info
8616
0
            .borrow()
8617
0
            .hooks()
8618
0
            .get_physical_device_display_properties_khr(
8619
0
                physical_device,
8620
0
                unsafe { ptr_as_uninit_mut(p_property_count) }.unwrap(),
8621
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_properties, p_property_count) },
8622
0
            );
8623
0
        match layer_result {
8624
0
            LayerResult::Handled(res) => match res {
8625
0
                Ok(()) => vk::Result::SUCCESS,
8626
0
                Err(e) => e,
8627
            },
8628
            LayerResult::Unhandled => unsafe {
8629
0
                (dispatch_table.get_physical_device_display_properties_khr)(
8630
0
                    physical_device,
8631
0
                    p_property_count,
8632
0
                    p_properties,
8633
0
                )
8634
            },
8635
        }
8636
0
    }
8637
0
    extern "system" fn get_physical_device_display_plane_properties_khr(
8638
0
        physical_device: vk::PhysicalDevice,
8639
0
        p_property_count: *mut u32,
8640
0
        p_properties: *mut vk::DisplayPlanePropertiesKHR,
8641
0
    ) -> vk::Result {
8642
0
        let global = Self::instance();
8643
0
        // vkGetPhysicalDeviceDisplayPlanePropertiesKHR
8644
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8645
0
        let dispatch_table = &instance_info.dispatch_table.khr_display;
8646
0
        let layer_result = instance_info
8647
0
            .customized_info
8648
0
            .borrow()
8649
0
            .hooks()
8650
0
            .get_physical_device_display_plane_properties_khr(
8651
0
                physical_device,
8652
0
                unsafe { ptr_as_uninit_mut(p_property_count) }.unwrap(),
8653
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_properties, p_property_count) },
8654
0
            );
8655
0
        match layer_result {
8656
0
            LayerResult::Handled(res) => match res {
8657
0
                Ok(()) => vk::Result::SUCCESS,
8658
0
                Err(e) => e,
8659
            },
8660
            LayerResult::Unhandled => unsafe {
8661
0
                (dispatch_table.get_physical_device_display_plane_properties_khr)(
8662
0
                    physical_device,
8663
0
                    p_property_count,
8664
0
                    p_properties,
8665
0
                )
8666
            },
8667
        }
8668
0
    }
8669
0
    extern "system" fn get_display_plane_supported_displays_khr(
8670
0
        physical_device: vk::PhysicalDevice,
8671
0
        plane_index: u32,
8672
0
        p_display_count: *mut u32,
8673
0
        p_displays: *mut vk::DisplayKHR,
8674
0
    ) -> vk::Result {
8675
0
        let global = Self::instance();
8676
0
        // vkGetDisplayPlaneSupportedDisplaysKHR
8677
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8678
0
        let dispatch_table = &instance_info.dispatch_table.khr_display;
8679
0
        let layer_result = instance_info
8680
0
            .customized_info
8681
0
            .borrow()
8682
0
            .hooks()
8683
0
            .get_display_plane_supported_displays_khr(physical_device, plane_index);
8684
0
        match layer_result {
8685
0
            LayerResult::Handled(res) => match res {
8686
0
                Ok(res) => unsafe {
8687
0
                    fill_vk_out_array(&res, NonNull::new(p_display_count).unwrap(), p_displays)
8688
                },
8689
0
                Err(e) => e,
8690
            },
8691
            LayerResult::Unhandled => unsafe {
8692
0
                (dispatch_table.get_display_plane_supported_displays_khr)(
8693
0
                    physical_device,
8694
0
                    plane_index,
8695
0
                    p_display_count,
8696
0
                    p_displays,
8697
0
                )
8698
            },
8699
        }
8700
0
    }
8701
0
    extern "system" fn get_display_mode_properties_khr(
8702
0
        physical_device: vk::PhysicalDevice,
8703
0
        display: vk::DisplayKHR,
8704
0
        p_property_count: *mut u32,
8705
0
        p_properties: *mut vk::DisplayModePropertiesKHR,
8706
0
    ) -> vk::Result {
8707
0
        let global = Self::instance();
8708
0
        // vkGetDisplayModePropertiesKHR
8709
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8710
0
        let dispatch_table = &instance_info.dispatch_table.khr_display;
8711
0
        let layer_result = instance_info
8712
0
            .customized_info
8713
0
            .borrow()
8714
0
            .hooks()
8715
0
            .get_display_mode_properties_khr(
8716
0
                physical_device,
8717
0
                display,
8718
0
                unsafe { ptr_as_uninit_mut(p_property_count) }.unwrap(),
8719
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_properties, p_property_count) },
8720
0
            );
8721
0
        match layer_result {
8722
0
            LayerResult::Handled(res) => match res {
8723
0
                Ok(()) => vk::Result::SUCCESS,
8724
0
                Err(e) => e,
8725
            },
8726
            LayerResult::Unhandled => unsafe {
8727
0
                (dispatch_table.get_display_mode_properties_khr)(
8728
0
                    physical_device,
8729
0
                    display,
8730
0
                    p_property_count,
8731
0
                    p_properties,
8732
0
                )
8733
            },
8734
        }
8735
0
    }
8736
0
    extern "system" fn create_display_mode_khr(
8737
0
        physical_device: vk::PhysicalDevice,
8738
0
        display: vk::DisplayKHR,
8739
0
        p_create_info: *const vk::DisplayModeCreateInfoKHR,
8740
0
        p_allocator: *const vk::AllocationCallbacks,
8741
0
        p_mode: *mut vk::DisplayModeKHR,
8742
0
    ) -> vk::Result {
8743
0
        let global = Self::instance();
8744
0
        // vkCreateDisplayModeKHR
8745
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8746
0
        let dispatch_table = &instance_info.dispatch_table.khr_display;
8747
0
        let layer_result = instance_info
8748
0
            .customized_info
8749
0
            .borrow()
8750
0
            .hooks()
8751
0
            .create_display_mode_khr(
8752
0
                physical_device,
8753
0
                display,
8754
0
                unsafe { p_create_info.as_ref() }.unwrap(),
8755
0
                unsafe { p_allocator.as_ref() },
8756
0
            );
8757
0
        match layer_result {
8758
0
            LayerResult::Handled(res) => match res {
8759
0
                Ok(res) => {
8760
0
                    *unsafe { p_mode.as_mut() }.unwrap() = res;
8761
0
                    vk::Result::SUCCESS
8762
                }
8763
0
                Err(e) => e,
8764
            },
8765
            LayerResult::Unhandled => unsafe {
8766
0
                (dispatch_table.create_display_mode_khr)(
8767
0
                    physical_device,
8768
0
                    display,
8769
0
                    p_create_info,
8770
0
                    p_allocator,
8771
0
                    p_mode,
8772
0
                )
8773
            },
8774
        }
8775
0
    }
8776
0
    extern "system" fn get_display_plane_capabilities_khr(
8777
0
        physical_device: vk::PhysicalDevice,
8778
0
        mode: vk::DisplayModeKHR,
8779
0
        plane_index: u32,
8780
0
        p_capabilities: *mut vk::DisplayPlaneCapabilitiesKHR,
8781
0
    ) -> vk::Result {
8782
0
        let global = Self::instance();
8783
0
        // vkGetDisplayPlaneCapabilitiesKHR
8784
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8785
0
        let dispatch_table = &instance_info.dispatch_table.khr_display;
8786
0
        let layer_result = instance_info
8787
0
            .customized_info
8788
0
            .borrow()
8789
0
            .hooks()
8790
0
            .get_display_plane_capabilities_khr(
8791
0
                physical_device,
8792
0
                mode,
8793
0
                plane_index,
8794
0
                unsafe { ptr_as_uninit_mut(p_capabilities) }.unwrap(),
8795
0
            );
8796
0
        match layer_result {
8797
0
            LayerResult::Handled(res) => match res {
8798
0
                Ok(()) => vk::Result::SUCCESS,
8799
0
                Err(e) => e,
8800
            },
8801
            LayerResult::Unhandled => unsafe {
8802
0
                (dispatch_table.get_display_plane_capabilities_khr)(
8803
0
                    physical_device,
8804
0
                    mode,
8805
0
                    plane_index,
8806
0
                    p_capabilities,
8807
0
                )
8808
            },
8809
        }
8810
0
    }
8811
0
    extern "system" fn create_display_plane_surface_khr(
8812
0
        instance: vk::Instance,
8813
0
        p_create_info: *const vk::DisplaySurfaceCreateInfoKHR,
8814
0
        p_allocator: *const vk::AllocationCallbacks,
8815
0
        p_surface: *mut vk::SurfaceKHR,
8816
0
    ) -> vk::Result {
8817
0
        let global = Self::instance();
8818
0
        // vkCreateDisplayPlaneSurfaceKHR
8819
0
        let instance_info = global.get_instance_info(instance).unwrap();
8820
0
        let dispatch_table = &instance_info.dispatch_table.khr_display;
8821
0
        let layer_result = instance_info
8822
0
            .customized_info
8823
0
            .borrow()
8824
0
            .hooks()
8825
0
            .create_display_plane_surface_khr(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
8826
0
                p_allocator.as_ref()
8827
0
            });
8828
0
        match layer_result {
8829
0
            LayerResult::Handled(res) => match res {
8830
0
                Ok(res) => {
8831
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
8832
0
                    vk::Result::SUCCESS
8833
                }
8834
0
                Err(e) => e,
8835
            },
8836
            LayerResult::Unhandled => unsafe {
8837
0
                (dispatch_table.create_display_plane_surface_khr)(
8838
0
                    instance,
8839
0
                    p_create_info,
8840
0
                    p_allocator,
8841
0
                    p_surface,
8842
0
                )
8843
            },
8844
        }
8845
0
    }
8846
0
    extern "system" fn create_xlib_surface_khr(
8847
0
        instance: vk::Instance,
8848
0
        p_create_info: *const vk::XlibSurfaceCreateInfoKHR,
8849
0
        p_allocator: *const vk::AllocationCallbacks,
8850
0
        p_surface: *mut vk::SurfaceKHR,
8851
0
    ) -> vk::Result {
8852
0
        let global = Self::instance();
8853
0
        // vkCreateXlibSurfaceKHR
8854
0
        let instance_info = global.get_instance_info(instance).unwrap();
8855
0
        let dispatch_table = &instance_info.dispatch_table.khr_xlib_surface;
8856
0
        let layer_result = instance_info
8857
0
            .customized_info
8858
0
            .borrow()
8859
0
            .hooks()
8860
0
            .create_xlib_surface_khr(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
8861
0
                p_allocator.as_ref()
8862
0
            });
8863
0
        match layer_result {
8864
0
            LayerResult::Handled(res) => match res {
8865
0
                Ok(res) => {
8866
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
8867
0
                    vk::Result::SUCCESS
8868
                }
8869
0
                Err(e) => e,
8870
            },
8871
            LayerResult::Unhandled => unsafe {
8872
0
                (dispatch_table.create_xlib_surface_khr)(
8873
0
                    instance,
8874
0
                    p_create_info,
8875
0
                    p_allocator,
8876
0
                    p_surface,
8877
0
                )
8878
            },
8879
        }
8880
0
    }
8881
0
    extern "system" fn get_physical_device_xlib_presentation_support_khr(
8882
0
        physical_device: vk::PhysicalDevice,
8883
0
        queue_family_index: u32,
8884
0
        dpy: *mut vk::Display,
8885
0
        visual_id: vk::VisualID,
8886
0
    ) -> vk::Bool32 {
8887
0
        let global = Self::instance();
8888
0
        // vkGetPhysicalDeviceXlibPresentationSupportKHR
8889
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8890
0
        let dispatch_table = &instance_info.dispatch_table.khr_xlib_surface;
8891
0
        let layer_result = instance_info
8892
0
            .customized_info
8893
0
            .borrow()
8894
0
            .hooks()
8895
0
            .get_physical_device_xlib_presentation_support_khr(
8896
0
                physical_device,
8897
0
                queue_family_index,
8898
0
                unsafe { ptr_as_uninit_mut(dpy) }.unwrap(),
8899
0
                visual_id,
8900
0
            );
8901
0
        match layer_result {
8902
0
            LayerResult::Handled(res) => {
8903
0
                if res {
8904
0
                    vk::TRUE
8905
                } else {
8906
0
                    vk::FALSE
8907
                }
8908
            }
8909
            LayerResult::Unhandled => unsafe {
8910
0
                (dispatch_table.get_physical_device_xlib_presentation_support_khr)(
8911
0
                    physical_device,
8912
0
                    queue_family_index,
8913
0
                    dpy,
8914
0
                    visual_id,
8915
0
                )
8916
            },
8917
        }
8918
0
    }
8919
0
    extern "system" fn create_xcb_surface_khr(
8920
0
        instance: vk::Instance,
8921
0
        p_create_info: *const vk::XcbSurfaceCreateInfoKHR,
8922
0
        p_allocator: *const vk::AllocationCallbacks,
8923
0
        p_surface: *mut vk::SurfaceKHR,
8924
0
    ) -> vk::Result {
8925
0
        let global = Self::instance();
8926
0
        // vkCreateXcbSurfaceKHR
8927
0
        let instance_info = global.get_instance_info(instance).unwrap();
8928
0
        let dispatch_table = &instance_info.dispatch_table.khr_xcb_surface;
8929
0
        let layer_result = instance_info
8930
0
            .customized_info
8931
0
            .borrow()
8932
0
            .hooks()
8933
0
            .create_xcb_surface_khr(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
8934
0
                p_allocator.as_ref()
8935
0
            });
8936
0
        match layer_result {
8937
0
            LayerResult::Handled(res) => match res {
8938
0
                Ok(res) => {
8939
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
8940
0
                    vk::Result::SUCCESS
8941
                }
8942
0
                Err(e) => e,
8943
            },
8944
            LayerResult::Unhandled => unsafe {
8945
0
                (dispatch_table.create_xcb_surface_khr)(
8946
0
                    instance,
8947
0
                    p_create_info,
8948
0
                    p_allocator,
8949
0
                    p_surface,
8950
0
                )
8951
            },
8952
        }
8953
0
    }
8954
0
    extern "system" fn get_physical_device_xcb_presentation_support_khr(
8955
0
        physical_device: vk::PhysicalDevice,
8956
0
        queue_family_index: u32,
8957
0
        connection: *mut vk::xcb_connection_t,
8958
0
        visual_id: vk::xcb_visualid_t,
8959
0
    ) -> vk::Bool32 {
8960
0
        let global = Self::instance();
8961
0
        // vkGetPhysicalDeviceXcbPresentationSupportKHR
8962
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8963
0
        let dispatch_table = &instance_info.dispatch_table.khr_xcb_surface;
8964
0
        let layer_result = instance_info
8965
0
            .customized_info
8966
0
            .borrow()
8967
0
            .hooks()
8968
0
            .get_physical_device_xcb_presentation_support_khr(
8969
0
                physical_device,
8970
0
                queue_family_index,
8971
0
                connection,
8972
0
                visual_id,
8973
0
            );
8974
0
        match layer_result {
8975
0
            LayerResult::Handled(res) => {
8976
0
                if res {
8977
0
                    vk::TRUE
8978
                } else {
8979
0
                    vk::FALSE
8980
                }
8981
            }
8982
            LayerResult::Unhandled => unsafe {
8983
0
                (dispatch_table.get_physical_device_xcb_presentation_support_khr)(
8984
0
                    physical_device,
8985
0
                    queue_family_index,
8986
0
                    connection,
8987
0
                    visual_id,
8988
0
                )
8989
            },
8990
        }
8991
0
    }
8992
0
    extern "system" fn create_wayland_surface_khr(
8993
0
        instance: vk::Instance,
8994
0
        p_create_info: *const vk::WaylandSurfaceCreateInfoKHR,
8995
0
        p_allocator: *const vk::AllocationCallbacks,
8996
0
        p_surface: *mut vk::SurfaceKHR,
8997
0
    ) -> vk::Result {
8998
0
        let global = Self::instance();
8999
0
        // vkCreateWaylandSurfaceKHR
9000
0
        let instance_info = global.get_instance_info(instance).unwrap();
9001
0
        let dispatch_table = &instance_info.dispatch_table.khr_wayland_surface;
9002
0
        let layer_result = instance_info
9003
0
            .customized_info
9004
0
            .borrow()
9005
0
            .hooks()
9006
0
            .create_wayland_surface_khr(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
9007
0
                p_allocator.as_ref()
9008
0
            });
9009
0
        match layer_result {
9010
0
            LayerResult::Handled(res) => match res {
9011
0
                Ok(res) => {
9012
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
9013
0
                    vk::Result::SUCCESS
9014
                }
9015
0
                Err(e) => e,
9016
            },
9017
            LayerResult::Unhandled => unsafe {
9018
0
                (dispatch_table.create_wayland_surface_khr)(
9019
0
                    instance,
9020
0
                    p_create_info,
9021
0
                    p_allocator,
9022
0
                    p_surface,
9023
0
                )
9024
            },
9025
        }
9026
0
    }
9027
0
    extern "system" fn get_physical_device_wayland_presentation_support_khr(
9028
0
        physical_device: vk::PhysicalDevice,
9029
0
        queue_family_index: u32,
9030
0
        display: *mut vk::wl_display,
9031
0
    ) -> vk::Bool32 {
9032
0
        let global = Self::instance();
9033
0
        // vkGetPhysicalDeviceWaylandPresentationSupportKHR
9034
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9035
0
        let dispatch_table = &instance_info.dispatch_table.khr_wayland_surface;
9036
0
        let layer_result = instance_info
9037
0
            .customized_info
9038
0
            .borrow()
9039
0
            .hooks()
9040
0
            .get_physical_device_wayland_presentation_support_khr(
9041
0
                physical_device,
9042
0
                queue_family_index,
9043
0
                display,
9044
0
            );
9045
0
        match layer_result {
9046
0
            LayerResult::Handled(res) => {
9047
0
                if res {
9048
0
                    vk::TRUE
9049
                } else {
9050
0
                    vk::FALSE
9051
                }
9052
            }
9053
            LayerResult::Unhandled => unsafe {
9054
0
                (dispatch_table.get_physical_device_wayland_presentation_support_khr)(
9055
0
                    physical_device,
9056
0
                    queue_family_index,
9057
0
                    display,
9058
0
                )
9059
            },
9060
        }
9061
0
    }
9062
0
    extern "system" fn create_android_surface_khr(
9063
0
        instance: vk::Instance,
9064
0
        p_create_info: *const vk::AndroidSurfaceCreateInfoKHR,
9065
0
        p_allocator: *const vk::AllocationCallbacks,
9066
0
        p_surface: *mut vk::SurfaceKHR,
9067
0
    ) -> vk::Result {
9068
0
        let global = Self::instance();
9069
0
        // vkCreateAndroidSurfaceKHR
9070
0
        let instance_info = global.get_instance_info(instance).unwrap();
9071
0
        let dispatch_table = &instance_info.dispatch_table.khr_android_surface;
9072
0
        let layer_result = instance_info
9073
0
            .customized_info
9074
0
            .borrow()
9075
0
            .hooks()
9076
0
            .create_android_surface_khr(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
9077
0
                p_allocator.as_ref()
9078
0
            });
9079
0
        match layer_result {
9080
0
            LayerResult::Handled(res) => match res {
9081
0
                Ok(res) => {
9082
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
9083
0
                    vk::Result::SUCCESS
9084
                }
9085
0
                Err(e) => e,
9086
            },
9087
            LayerResult::Unhandled => unsafe {
9088
0
                (dispatch_table.create_android_surface_khr)(
9089
0
                    instance,
9090
0
                    p_create_info,
9091
0
                    p_allocator,
9092
0
                    p_surface,
9093
0
                )
9094
            },
9095
        }
9096
0
    }
9097
0
    extern "system" fn create_win32_surface_khr(
9098
0
        instance: vk::Instance,
9099
0
        p_create_info: *const vk::Win32SurfaceCreateInfoKHR,
9100
0
        p_allocator: *const vk::AllocationCallbacks,
9101
0
        p_surface: *mut vk::SurfaceKHR,
9102
0
    ) -> vk::Result {
9103
0
        let global = Self::instance();
9104
0
        // vkCreateWin32SurfaceKHR
9105
0
        let instance_info = global.get_instance_info(instance).unwrap();
9106
0
        let dispatch_table = &instance_info.dispatch_table.khr_win32_surface;
9107
0
        let layer_result = instance_info
9108
0
            .customized_info
9109
0
            .borrow()
9110
0
            .hooks()
9111
0
            .create_win32_surface_khr(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
9112
0
                p_allocator.as_ref()
9113
0
            });
9114
0
        match layer_result {
9115
0
            LayerResult::Handled(res) => match res {
9116
0
                Ok(res) => {
9117
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
9118
0
                    vk::Result::SUCCESS
9119
                }
9120
0
                Err(e) => e,
9121
            },
9122
            LayerResult::Unhandled => unsafe {
9123
0
                (dispatch_table.create_win32_surface_khr)(
9124
0
                    instance,
9125
0
                    p_create_info,
9126
0
                    p_allocator,
9127
0
                    p_surface,
9128
0
                )
9129
            },
9130
        }
9131
0
    }
9132
0
    extern "system" fn get_physical_device_win32_presentation_support_khr(
9133
0
        physical_device: vk::PhysicalDevice,
9134
0
        queue_family_index: u32,
9135
0
    ) -> vk::Bool32 {
9136
0
        let global = Self::instance();
9137
0
        // vkGetPhysicalDeviceWin32PresentationSupportKHR
9138
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9139
0
        let dispatch_table = &instance_info.dispatch_table.khr_win32_surface;
9140
0
        let layer_result = instance_info
9141
0
            .customized_info
9142
0
            .borrow()
9143
0
            .hooks()
9144
0
            .get_physical_device_win32_presentation_support_khr(
9145
0
                physical_device,
9146
0
                queue_family_index,
9147
0
            );
9148
0
        match layer_result {
9149
0
            LayerResult::Handled(res) => {
9150
0
                if res {
9151
0
                    vk::TRUE
9152
                } else {
9153
0
                    vk::FALSE
9154
                }
9155
            }
9156
            LayerResult::Unhandled => unsafe {
9157
0
                (dispatch_table.get_physical_device_win32_presentation_support_khr)(
9158
0
                    physical_device,
9159
0
                    queue_family_index,
9160
0
                )
9161
            },
9162
        }
9163
0
    }
9164
0
    extern "system" fn get_physical_device_video_capabilities_khr(
9165
0
        physical_device: vk::PhysicalDevice,
9166
0
        p_video_profile: *const vk::VideoProfileInfoKHR,
9167
0
        p_capabilities: *mut vk::VideoCapabilitiesKHR,
9168
0
    ) -> vk::Result {
9169
0
        let global = Self::instance();
9170
0
        // vkGetPhysicalDeviceVideoCapabilitiesKHR
9171
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9172
0
        let dispatch_table = &instance_info.dispatch_table.khr_video_queue;
9173
0
        let layer_result = instance_info
9174
0
            .customized_info
9175
0
            .borrow()
9176
0
            .hooks()
9177
0
            .get_physical_device_video_capabilities_khr(
9178
0
                physical_device,
9179
0
                unsafe { p_video_profile.as_ref() }.unwrap(),
9180
0
                unsafe { ptr_as_uninit_mut(p_capabilities) }.unwrap(),
9181
0
            );
9182
0
        match layer_result {
9183
0
            LayerResult::Handled(res) => match res {
9184
0
                Ok(()) => vk::Result::SUCCESS,
9185
0
                Err(e) => e,
9186
            },
9187
            LayerResult::Unhandled => unsafe {
9188
0
                (dispatch_table.get_physical_device_video_capabilities_khr)(
9189
0
                    physical_device,
9190
0
                    p_video_profile,
9191
0
                    p_capabilities,
9192
0
                )
9193
            },
9194
        }
9195
0
    }
9196
0
    extern "system" fn get_physical_device_video_format_properties_khr(
9197
0
        physical_device: vk::PhysicalDevice,
9198
0
        p_video_format_info: *const vk::PhysicalDeviceVideoFormatInfoKHR,
9199
0
        p_video_format_property_count: *mut u32,
9200
0
        p_video_format_properties: *mut vk::VideoFormatPropertiesKHR,
9201
0
    ) -> vk::Result {
9202
0
        let global = Self::instance();
9203
0
        // vkGetPhysicalDeviceVideoFormatPropertiesKHR
9204
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9205
0
        let dispatch_table = &instance_info.dispatch_table.khr_video_queue;
9206
0
        let layer_result = instance_info
9207
0
            .customized_info
9208
0
            .borrow()
9209
0
            .hooks()
9210
0
            .get_physical_device_video_format_properties_khr(
9211
0
                physical_device,
9212
0
                unsafe { p_video_format_info.as_ref() }.unwrap(),
9213
0
                unsafe { ptr_as_uninit_mut(p_video_format_property_count) }.unwrap(),
9214
0
                unsafe {
9215
0
                    maybe_uninit_slice_from_raw_parts_mut(
9216
0
                        p_video_format_properties,
9217
0
                        p_video_format_property_count,
9218
0
                    )
9219
0
                },
9220
0
            );
9221
0
        match layer_result {
9222
0
            LayerResult::Handled(res) => match res {
9223
0
                Ok(()) => vk::Result::SUCCESS,
9224
0
                Err(e) => e,
9225
            },
9226
            LayerResult::Unhandled => unsafe {
9227
0
                (dispatch_table.get_physical_device_video_format_properties_khr)(
9228
0
                    physical_device,
9229
0
                    p_video_format_info,
9230
0
                    p_video_format_property_count,
9231
0
                    p_video_format_properties,
9232
0
                )
9233
            },
9234
        }
9235
0
    }
9236
0
    extern "system" fn enumerate_physical_device_queue_family_performance_query_counters_khr(
9237
0
        physical_device: vk::PhysicalDevice,
9238
0
        queue_family_index: u32,
9239
0
        p_counter_count: *mut u32,
9240
0
        p_counters: *mut vk::PerformanceCounterKHR,
9241
0
        p_counter_descriptions: *mut vk::PerformanceCounterDescriptionKHR,
9242
0
    ) -> vk::Result {
9243
0
        let global = Self::instance();
9244
0
        // vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
9245
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9246
0
        let dispatch_table = &instance_info.dispatch_table.khr_performance_query;
9247
0
        let layer_result = instance_info
9248
0
            .customized_info
9249
0
            .borrow()
9250
0
            .hooks()
9251
0
            .enumerate_physical_device_queue_family_performance_query_counters_khr(
9252
0
                physical_device,
9253
0
                queue_family_index,
9254
0
                unsafe { ptr_as_uninit_mut(p_counter_count) }.unwrap(),
9255
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_counters, p_counter_count) },
9256
0
                unsafe {
9257
0
                    maybe_uninit_slice_from_raw_parts_mut(p_counter_descriptions, p_counter_count)
9258
0
                },
9259
0
            );
9260
0
        match layer_result {
9261
0
            LayerResult::Handled(res) => match res {
9262
0
                Ok(()) => vk::Result::SUCCESS,
9263
0
                Err(e) => e,
9264
            },
9265
            LayerResult::Unhandled => unsafe {
9266
0
                (dispatch_table
9267
0
                    .enumerate_physical_device_queue_family_performance_query_counters_khr)(
9268
0
                    physical_device,
9269
0
                    queue_family_index,
9270
0
                    p_counter_count,
9271
0
                    p_counters,
9272
0
                    p_counter_descriptions,
9273
0
                )
9274
            },
9275
        }
9276
0
    }
9277
0
    extern "system" fn get_physical_device_queue_family_performance_query_passes_khr(
9278
0
        physical_device: vk::PhysicalDevice,
9279
0
        p_performance_query_create_info: *const vk::QueryPoolPerformanceCreateInfoKHR,
9280
0
        p_num_passes: *mut u32,
9281
0
    ) {
9282
0
        let global = Self::instance();
9283
0
        // vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR
9284
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9285
0
        let dispatch_table = &instance_info.dispatch_table.khr_performance_query;
9286
0
        let layer_result = instance_info
9287
0
            .customized_info
9288
0
            .borrow()
9289
0
            .hooks()
9290
0
            .get_physical_device_queue_family_performance_query_passes_khr(
9291
0
                physical_device,
9292
0
                unsafe { p_performance_query_create_info.as_ref() }.unwrap(),
9293
0
            );
9294
0
        match layer_result {
9295
0
            LayerResult::Handled(res) => {
9296
0
                *unsafe { p_num_passes.as_mut() }.unwrap() = res;
9297
0
            }
9298
            LayerResult::Unhandled => unsafe {
9299
0
                (dispatch_table.get_physical_device_queue_family_performance_query_passes_khr)(
9300
0
                    physical_device,
9301
0
                    p_performance_query_create_info,
9302
0
                    p_num_passes,
9303
0
                )
9304
            },
9305
        }
9306
0
    }
9307
0
    extern "system" fn get_physical_device_surface_capabilities2_khr(
9308
0
        physical_device: vk::PhysicalDevice,
9309
0
        p_surface_info: *const vk::PhysicalDeviceSurfaceInfo2KHR,
9310
0
        p_surface_capabilities: *mut vk::SurfaceCapabilities2KHR,
9311
0
    ) -> vk::Result {
9312
0
        let global = Self::instance();
9313
0
        // vkGetPhysicalDeviceSurfaceCapabilities2KHR
9314
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9315
0
        let dispatch_table = &instance_info.dispatch_table.khr_get_surface_capabilities2;
9316
0
        let layer_result = instance_info
9317
0
            .customized_info
9318
0
            .borrow()
9319
0
            .hooks()
9320
0
            .get_physical_device_surface_capabilities2_khr(
9321
0
                physical_device,
9322
0
                unsafe { p_surface_info.as_ref() }.unwrap(),
9323
0
                unsafe { ptr_as_uninit_mut(p_surface_capabilities) }.unwrap(),
9324
0
            );
9325
0
        match layer_result {
9326
0
            LayerResult::Handled(res) => match res {
9327
0
                Ok(()) => vk::Result::SUCCESS,
9328
0
                Err(e) => e,
9329
            },
9330
            LayerResult::Unhandled => unsafe {
9331
0
                (dispatch_table.get_physical_device_surface_capabilities2_khr)(
9332
0
                    physical_device,
9333
0
                    p_surface_info,
9334
0
                    p_surface_capabilities,
9335
0
                )
9336
            },
9337
        }
9338
0
    }
9339
0
    extern "system" fn get_physical_device_surface_formats2_khr(
9340
0
        physical_device: vk::PhysicalDevice,
9341
0
        p_surface_info: *const vk::PhysicalDeviceSurfaceInfo2KHR,
9342
0
        p_surface_format_count: *mut u32,
9343
0
        p_surface_formats: *mut vk::SurfaceFormat2KHR,
9344
0
    ) -> vk::Result {
9345
0
        let global = Self::instance();
9346
0
        // vkGetPhysicalDeviceSurfaceFormats2KHR
9347
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9348
0
        let dispatch_table = &instance_info.dispatch_table.khr_get_surface_capabilities2;
9349
0
        let layer_result = instance_info
9350
0
            .customized_info
9351
0
            .borrow()
9352
0
            .hooks()
9353
0
            .get_physical_device_surface_formats2_khr(
9354
0
                physical_device,
9355
0
                unsafe { p_surface_info.as_ref() }.unwrap(),
9356
0
                unsafe { ptr_as_uninit_mut(p_surface_format_count) }.unwrap(),
9357
0
                unsafe {
9358
0
                    maybe_uninit_slice_from_raw_parts_mut(p_surface_formats, p_surface_format_count)
9359
0
                },
9360
0
            );
9361
0
        match layer_result {
9362
0
            LayerResult::Handled(res) => match res {
9363
0
                Ok(()) => vk::Result::SUCCESS,
9364
0
                Err(e) => e,
9365
            },
9366
            LayerResult::Unhandled => unsafe {
9367
0
                (dispatch_table.get_physical_device_surface_formats2_khr)(
9368
0
                    physical_device,
9369
0
                    p_surface_info,
9370
0
                    p_surface_format_count,
9371
0
                    p_surface_formats,
9372
0
                )
9373
            },
9374
        }
9375
0
    }
9376
0
    extern "system" fn get_physical_device_display_properties2_khr(
9377
0
        physical_device: vk::PhysicalDevice,
9378
0
        p_property_count: *mut u32,
9379
0
        p_properties: *mut vk::DisplayProperties2KHR,
9380
0
    ) -> vk::Result {
9381
0
        let global = Self::instance();
9382
0
        // vkGetPhysicalDeviceDisplayProperties2KHR
9383
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9384
0
        let dispatch_table = &instance_info.dispatch_table.khr_get_display_properties2;
9385
0
        let layer_result = instance_info
9386
0
            .customized_info
9387
0
            .borrow()
9388
0
            .hooks()
9389
0
            .get_physical_device_display_properties2_khr(
9390
0
                physical_device,
9391
0
                unsafe { ptr_as_uninit_mut(p_property_count) }.unwrap(),
9392
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_properties, p_property_count) },
9393
0
            );
9394
0
        match layer_result {
9395
0
            LayerResult::Handled(res) => match res {
9396
0
                Ok(()) => vk::Result::SUCCESS,
9397
0
                Err(e) => e,
9398
            },
9399
            LayerResult::Unhandled => unsafe {
9400
0
                (dispatch_table.get_physical_device_display_properties2_khr)(
9401
0
                    physical_device,
9402
0
                    p_property_count,
9403
0
                    p_properties,
9404
0
                )
9405
            },
9406
        }
9407
0
    }
9408
0
    extern "system" fn get_physical_device_display_plane_properties2_khr(
9409
0
        physical_device: vk::PhysicalDevice,
9410
0
        p_property_count: *mut u32,
9411
0
        p_properties: *mut vk::DisplayPlaneProperties2KHR,
9412
0
    ) -> vk::Result {
9413
0
        let global = Self::instance();
9414
0
        // vkGetPhysicalDeviceDisplayPlaneProperties2KHR
9415
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9416
0
        let dispatch_table = &instance_info.dispatch_table.khr_get_display_properties2;
9417
0
        let layer_result = instance_info
9418
0
            .customized_info
9419
0
            .borrow()
9420
0
            .hooks()
9421
0
            .get_physical_device_display_plane_properties2_khr(
9422
0
                physical_device,
9423
0
                unsafe { ptr_as_uninit_mut(p_property_count) }.unwrap(),
9424
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_properties, p_property_count) },
9425
0
            );
9426
0
        match layer_result {
9427
0
            LayerResult::Handled(res) => match res {
9428
0
                Ok(()) => vk::Result::SUCCESS,
9429
0
                Err(e) => e,
9430
            },
9431
            LayerResult::Unhandled => unsafe {
9432
0
                (dispatch_table.get_physical_device_display_plane_properties2_khr)(
9433
0
                    physical_device,
9434
0
                    p_property_count,
9435
0
                    p_properties,
9436
0
                )
9437
            },
9438
        }
9439
0
    }
9440
0
    extern "system" fn get_display_mode_properties2_khr(
9441
0
        physical_device: vk::PhysicalDevice,
9442
0
        display: vk::DisplayKHR,
9443
0
        p_property_count: *mut u32,
9444
0
        p_properties: *mut vk::DisplayModeProperties2KHR,
9445
0
    ) -> vk::Result {
9446
0
        let global = Self::instance();
9447
0
        // vkGetDisplayModeProperties2KHR
9448
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9449
0
        let dispatch_table = &instance_info.dispatch_table.khr_get_display_properties2;
9450
0
        let layer_result = instance_info
9451
0
            .customized_info
9452
0
            .borrow()
9453
0
            .hooks()
9454
0
            .get_display_mode_properties2_khr(
9455
0
                physical_device,
9456
0
                display,
9457
0
                unsafe { ptr_as_uninit_mut(p_property_count) }.unwrap(),
9458
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_properties, p_property_count) },
9459
0
            );
9460
0
        match layer_result {
9461
0
            LayerResult::Handled(res) => match res {
9462
0
                Ok(()) => vk::Result::SUCCESS,
9463
0
                Err(e) => e,
9464
            },
9465
            LayerResult::Unhandled => unsafe {
9466
0
                (dispatch_table.get_display_mode_properties2_khr)(
9467
0
                    physical_device,
9468
0
                    display,
9469
0
                    p_property_count,
9470
0
                    p_properties,
9471
0
                )
9472
            },
9473
        }
9474
0
    }
9475
0
    extern "system" fn get_display_plane_capabilities2_khr(
9476
0
        physical_device: vk::PhysicalDevice,
9477
0
        p_display_plane_info: *const vk::DisplayPlaneInfo2KHR,
9478
0
        p_capabilities: *mut vk::DisplayPlaneCapabilities2KHR,
9479
0
    ) -> vk::Result {
9480
0
        let global = Self::instance();
9481
0
        // vkGetDisplayPlaneCapabilities2KHR
9482
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9483
0
        let dispatch_table = &instance_info.dispatch_table.khr_get_display_properties2;
9484
0
        let layer_result = instance_info
9485
0
            .customized_info
9486
0
            .borrow()
9487
0
            .hooks()
9488
0
            .get_display_plane_capabilities2_khr(
9489
0
                physical_device,
9490
0
                unsafe { p_display_plane_info.as_ref() }.unwrap(),
9491
0
                unsafe { ptr_as_uninit_mut(p_capabilities) }.unwrap(),
9492
0
            );
9493
0
        match layer_result {
9494
0
            LayerResult::Handled(res) => match res {
9495
0
                Ok(()) => vk::Result::SUCCESS,
9496
0
                Err(e) => e,
9497
            },
9498
            LayerResult::Unhandled => unsafe {
9499
0
                (dispatch_table.get_display_plane_capabilities2_khr)(
9500
0
                    physical_device,
9501
0
                    p_display_plane_info,
9502
0
                    p_capabilities,
9503
0
                )
9504
            },
9505
        }
9506
0
    }
9507
0
    extern "system" fn get_physical_device_fragment_shading_rates_khr(
9508
0
        physical_device: vk::PhysicalDevice,
9509
0
        p_fragment_shading_rate_count: *mut u32,
9510
0
        p_fragment_shading_rates: *mut vk::PhysicalDeviceFragmentShadingRateKHR,
9511
0
    ) -> vk::Result {
9512
0
        let global = Self::instance();
9513
0
        // vkGetPhysicalDeviceFragmentShadingRatesKHR
9514
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9515
0
        let dispatch_table = &instance_info.dispatch_table.khr_fragment_shading_rate;
9516
0
        let layer_result = instance_info
9517
0
            .customized_info
9518
0
            .borrow()
9519
0
            .hooks()
9520
0
            .get_physical_device_fragment_shading_rates_khr(
9521
0
                physical_device,
9522
0
                unsafe { ptr_as_uninit_mut(p_fragment_shading_rate_count) }.unwrap(),
9523
0
                unsafe {
9524
0
                    maybe_uninit_slice_from_raw_parts_mut(
9525
0
                        p_fragment_shading_rates,
9526
0
                        p_fragment_shading_rate_count,
9527
0
                    )
9528
0
                },
9529
0
            );
9530
0
        match layer_result {
9531
0
            LayerResult::Handled(res) => match res {
9532
0
                Ok(()) => vk::Result::SUCCESS,
9533
0
                Err(e) => e,
9534
            },
9535
            LayerResult::Unhandled => unsafe {
9536
0
                (dispatch_table.get_physical_device_fragment_shading_rates_khr)(
9537
0
                    physical_device,
9538
0
                    p_fragment_shading_rate_count,
9539
0
                    p_fragment_shading_rates,
9540
0
                )
9541
            },
9542
        }
9543
0
    }
9544
0
    extern "system" fn create_debug_report_callback_ext(
9545
0
        instance: vk::Instance,
9546
0
        p_create_info: *const vk::DebugReportCallbackCreateInfoEXT,
9547
0
        p_allocator: *const vk::AllocationCallbacks,
9548
0
        p_callback: *mut vk::DebugReportCallbackEXT,
9549
0
    ) -> vk::Result {
9550
0
        let global = Self::instance();
9551
0
        // vkCreateDebugReportCallbackEXT
9552
0
        let instance_info = global.get_instance_info(instance).unwrap();
9553
0
        let dispatch_table = &instance_info.dispatch_table.ext_debug_report;
9554
0
        let layer_result = instance_info
9555
0
            .customized_info
9556
0
            .borrow()
9557
0
            .hooks()
9558
0
            .create_debug_report_callback_ext(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
9559
0
                p_allocator.as_ref()
9560
0
            });
9561
0
        match layer_result {
9562
0
            LayerResult::Handled(res) => match res {
9563
0
                Ok(res) => {
9564
0
                    *unsafe { p_callback.as_mut() }.unwrap() = res;
9565
0
                    vk::Result::SUCCESS
9566
                }
9567
0
                Err(e) => e,
9568
            },
9569
            LayerResult::Unhandled => unsafe {
9570
0
                (dispatch_table.create_debug_report_callback_ext)(
9571
0
                    instance,
9572
0
                    p_create_info,
9573
0
                    p_allocator,
9574
0
                    p_callback,
9575
0
                )
9576
            },
9577
        }
9578
0
    }
9579
0
    extern "system" fn destroy_debug_report_callback_ext(
9580
0
        instance: vk::Instance,
9581
0
        callback: vk::DebugReportCallbackEXT,
9582
0
        p_allocator: *const vk::AllocationCallbacks,
9583
0
    ) {
9584
0
        let global = Self::instance();
9585
0
        // vkDestroyDebugReportCallbackEXT
9586
0
        let instance_info = global.get_instance_info(instance).unwrap();
9587
0
        let dispatch_table = &instance_info.dispatch_table.ext_debug_report;
9588
0
        let layer_result = instance_info
9589
0
            .customized_info
9590
0
            .borrow()
9591
0
            .hooks()
9592
0
            .destroy_debug_report_callback_ext(callback, unsafe { p_allocator.as_ref() });
9593
0
        match layer_result {
9594
0
            LayerResult::Handled(res) => res,
9595
            LayerResult::Unhandled => unsafe {
9596
0
                (dispatch_table.destroy_debug_report_callback_ext)(instance, callback, p_allocator)
9597
            },
9598
        }
9599
0
    }
9600
0
    extern "system" fn debug_report_message_ext(
9601
0
        instance: vk::Instance,
9602
0
        flags: vk::DebugReportFlagsEXT,
9603
0
        object_type: vk::DebugReportObjectTypeEXT,
9604
0
        object: u64,
9605
0
        location: usize,
9606
0
        message_code: i32,
9607
0
        p_layer_prefix: *const c_char,
9608
0
        p_message: *const c_char,
9609
0
    ) {
9610
0
        let global = Self::instance();
9611
0
        // vkDebugReportMessageEXT
9612
0
        let instance_info = global.get_instance_info(instance).unwrap();
9613
0
        let dispatch_table = &instance_info.dispatch_table.ext_debug_report;
9614
0
        let layer_result = instance_info
9615
0
            .customized_info
9616
0
            .borrow()
9617
0
            .hooks()
9618
0
            .debug_report_message_ext(
9619
0
                flags,
9620
0
                object_type,
9621
0
                object,
9622
0
                location,
9623
0
                message_code,
9624
0
                unsafe { CStr::from_ptr(p_layer_prefix) }.to_str().unwrap(),
9625
0
                unsafe { CStr::from_ptr(p_message) }.to_str().unwrap(),
9626
0
            );
9627
0
        match layer_result {
9628
0
            LayerResult::Handled(res) => res,
9629
            LayerResult::Unhandled => unsafe {
9630
0
                (dispatch_table.debug_report_message_ext)(
9631
0
                    instance,
9632
0
                    flags,
9633
0
                    object_type,
9634
0
                    object,
9635
0
                    location,
9636
0
                    message_code,
9637
0
                    p_layer_prefix,
9638
0
                    p_message,
9639
0
                )
9640
            },
9641
        }
9642
0
    }
9643
0
    extern "system" fn create_stream_descriptor_surface_ggp(
9644
0
        instance: vk::Instance,
9645
0
        p_create_info: *const vk::StreamDescriptorSurfaceCreateInfoGGP,
9646
0
        p_allocator: *const vk::AllocationCallbacks,
9647
0
        p_surface: *mut vk::SurfaceKHR,
9648
0
    ) -> vk::Result {
9649
0
        let global = Self::instance();
9650
0
        // vkCreateStreamDescriptorSurfaceGGP
9651
0
        let instance_info = global.get_instance_info(instance).unwrap();
9652
0
        let dispatch_table = &instance_info.dispatch_table.ggp_stream_descriptor_surface;
9653
0
        let layer_result = instance_info
9654
0
            .customized_info
9655
0
            .borrow()
9656
0
            .hooks()
9657
0
            .create_stream_descriptor_surface_ggp(
9658
0
                unsafe { p_create_info.as_ref() }.unwrap(),
9659
0
                unsafe { p_allocator.as_ref() },
9660
0
            );
9661
0
        match layer_result {
9662
0
            LayerResult::Handled(res) => match res {
9663
0
                Ok(res) => {
9664
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
9665
0
                    vk::Result::SUCCESS
9666
                }
9667
0
                Err(e) => e,
9668
            },
9669
            LayerResult::Unhandled => unsafe {
9670
0
                (dispatch_table.create_stream_descriptor_surface_ggp)(
9671
0
                    instance,
9672
0
                    p_create_info,
9673
0
                    p_allocator,
9674
0
                    p_surface,
9675
0
                )
9676
            },
9677
        }
9678
0
    }
9679
0
    extern "system" fn get_physical_device_external_image_format_properties_nv(
9680
0
        physical_device: vk::PhysicalDevice,
9681
0
        format: vk::Format,
9682
0
        _type: vk::ImageType,
9683
0
        tiling: vk::ImageTiling,
9684
0
        usage: vk::ImageUsageFlags,
9685
0
        flags: vk::ImageCreateFlags,
9686
0
        external_handle_type: vk::ExternalMemoryHandleTypeFlagsNV,
9687
0
        p_external_image_format_properties: *mut vk::ExternalImageFormatPropertiesNV,
9688
0
    ) -> vk::Result {
9689
0
        let global = Self::instance();
9690
0
        // vkGetPhysicalDeviceExternalImageFormatPropertiesNV
9691
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9692
0
        let dispatch_table = &instance_info.dispatch_table.nv_external_memory_capabilities;
9693
0
        let layer_result = instance_info
9694
0
            .customized_info
9695
0
            .borrow()
9696
0
            .hooks()
9697
0
            .get_physical_device_external_image_format_properties_nv(
9698
0
                physical_device,
9699
0
                format,
9700
0
                _type,
9701
0
                tiling,
9702
0
                usage,
9703
0
                flags,
9704
0
                external_handle_type,
9705
0
                unsafe { ptr_as_uninit_mut(p_external_image_format_properties) }.unwrap(),
9706
0
            );
9707
0
        match layer_result {
9708
0
            LayerResult::Handled(res) => match res {
9709
0
                Ok(()) => vk::Result::SUCCESS,
9710
0
                Err(e) => e,
9711
            },
9712
            LayerResult::Unhandled => unsafe {
9713
0
                (dispatch_table.get_physical_device_external_image_format_properties_nv)(
9714
0
                    physical_device,
9715
0
                    format,
9716
0
                    _type,
9717
0
                    tiling,
9718
0
                    usage,
9719
0
                    flags,
9720
0
                    external_handle_type,
9721
0
                    p_external_image_format_properties,
9722
0
                )
9723
            },
9724
        }
9725
0
    }
9726
0
    extern "system" fn create_vi_surface_nn(
9727
0
        instance: vk::Instance,
9728
0
        p_create_info: *const vk::ViSurfaceCreateInfoNN,
9729
0
        p_allocator: *const vk::AllocationCallbacks,
9730
0
        p_surface: *mut vk::SurfaceKHR,
9731
0
    ) -> vk::Result {
9732
0
        let global = Self::instance();
9733
0
        // vkCreateViSurfaceNN
9734
0
        let instance_info = global.get_instance_info(instance).unwrap();
9735
0
        let dispatch_table = &instance_info.dispatch_table.nn_vi_surface;
9736
0
        let layer_result = instance_info
9737
0
            .customized_info
9738
0
            .borrow()
9739
0
            .hooks()
9740
0
            .create_vi_surface_nn(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
9741
0
                p_allocator.as_ref()
9742
0
            });
9743
0
        match layer_result {
9744
0
            LayerResult::Handled(res) => match res {
9745
0
                Ok(res) => {
9746
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
9747
0
                    vk::Result::SUCCESS
9748
                }
9749
0
                Err(e) => e,
9750
            },
9751
            LayerResult::Unhandled => unsafe {
9752
0
                (dispatch_table.create_vi_surface_nn)(
9753
0
                    instance,
9754
0
                    p_create_info,
9755
0
                    p_allocator,
9756
0
                    p_surface,
9757
0
                )
9758
            },
9759
        }
9760
0
    }
9761
0
    extern "system" fn release_display_ext(
9762
0
        physical_device: vk::PhysicalDevice,
9763
0
        display: vk::DisplayKHR,
9764
0
    ) -> vk::Result {
9765
0
        let global = Self::instance();
9766
0
        // vkReleaseDisplayEXT
9767
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9768
0
        let dispatch_table = &instance_info.dispatch_table.ext_direct_mode_display;
9769
0
        let layer_result = instance_info
9770
0
            .customized_info
9771
0
            .borrow()
9772
0
            .hooks()
9773
0
            .release_display_ext(physical_device, display);
9774
0
        match layer_result {
9775
0
            LayerResult::Handled(res) => match res {
9776
0
                Ok(()) => vk::Result::SUCCESS,
9777
0
                Err(e) => e,
9778
            },
9779
            LayerResult::Unhandled => unsafe {
9780
0
                (dispatch_table.release_display_ext)(physical_device, display)
9781
            },
9782
        }
9783
0
    }
9784
0
    extern "system" fn acquire_xlib_display_ext(
9785
0
        physical_device: vk::PhysicalDevice,
9786
0
        dpy: *mut vk::Display,
9787
0
        display: vk::DisplayKHR,
9788
0
    ) -> vk::Result {
9789
0
        let global = Self::instance();
9790
0
        // vkAcquireXlibDisplayEXT
9791
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9792
0
        let dispatch_table = &instance_info.dispatch_table.ext_acquire_xlib_display;
9793
0
        let layer_result = instance_info
9794
0
            .customized_info
9795
0
            .borrow()
9796
0
            .hooks()
9797
0
            .acquire_xlib_display_ext(
9798
0
                physical_device,
9799
0
                unsafe { ptr_as_uninit_mut(dpy) }.unwrap(),
9800
0
                display,
9801
0
            );
9802
0
        match layer_result {
9803
0
            LayerResult::Handled(res) => match res {
9804
0
                Ok(()) => vk::Result::SUCCESS,
9805
0
                Err(e) => e,
9806
            },
9807
            LayerResult::Unhandled => unsafe {
9808
0
                (dispatch_table.acquire_xlib_display_ext)(physical_device, dpy, display)
9809
            },
9810
        }
9811
0
    }
9812
0
    extern "system" fn get_rand_r_output_display_ext(
9813
0
        physical_device: vk::PhysicalDevice,
9814
0
        dpy: *mut vk::Display,
9815
0
        rr_output: vk::RROutput,
9816
0
        p_display: *mut vk::DisplayKHR,
9817
0
    ) -> vk::Result {
9818
0
        let global = Self::instance();
9819
0
        // vkGetRandROutputDisplayEXT
9820
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9821
0
        let dispatch_table = &instance_info.dispatch_table.ext_acquire_xlib_display;
9822
0
        let layer_result = instance_info
9823
0
            .customized_info
9824
0
            .borrow()
9825
0
            .hooks()
9826
0
            .get_rand_r_output_display_ext(
9827
0
                physical_device,
9828
0
                unsafe { ptr_as_uninit_mut(dpy) }.unwrap(),
9829
0
                rr_output,
9830
0
            );
9831
0
        match layer_result {
9832
0
            LayerResult::Handled(res) => match res {
9833
0
                Ok(res) => {
9834
0
                    *unsafe { p_display.as_mut() }.unwrap() = res;
9835
0
                    vk::Result::SUCCESS
9836
                }
9837
0
                Err(e) => e,
9838
            },
9839
            LayerResult::Unhandled => unsafe {
9840
0
                (dispatch_table.get_rand_r_output_display_ext)(
9841
0
                    physical_device,
9842
0
                    dpy,
9843
0
                    rr_output,
9844
0
                    p_display,
9845
0
                )
9846
            },
9847
        }
9848
0
    }
9849
0
    extern "system" fn get_physical_device_surface_capabilities2_ext(
9850
0
        physical_device: vk::PhysicalDevice,
9851
0
        surface: vk::SurfaceKHR,
9852
0
        p_surface_capabilities: *mut vk::SurfaceCapabilities2EXT,
9853
0
    ) -> vk::Result {
9854
0
        let global = Self::instance();
9855
0
        // vkGetPhysicalDeviceSurfaceCapabilities2EXT
9856
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9857
0
        let dispatch_table = &instance_info.dispatch_table.ext_display_surface_counter;
9858
0
        let layer_result = instance_info
9859
0
            .customized_info
9860
0
            .borrow()
9861
0
            .hooks()
9862
0
            .get_physical_device_surface_capabilities2_ext(
9863
0
                physical_device,
9864
0
                surface,
9865
0
                unsafe { ptr_as_uninit_mut(p_surface_capabilities) }.unwrap(),
9866
0
            );
9867
0
        match layer_result {
9868
0
            LayerResult::Handled(res) => match res {
9869
0
                Ok(()) => vk::Result::SUCCESS,
9870
0
                Err(e) => e,
9871
            },
9872
            LayerResult::Unhandled => unsafe {
9873
0
                (dispatch_table.get_physical_device_surface_capabilities2_ext)(
9874
0
                    physical_device,
9875
0
                    surface,
9876
0
                    p_surface_capabilities,
9877
0
                )
9878
            },
9879
        }
9880
0
    }
9881
0
    extern "system" fn create_ios_surface_mvk(
9882
0
        instance: vk::Instance,
9883
0
        p_create_info: *const vk::IOSSurfaceCreateInfoMVK,
9884
0
        p_allocator: *const vk::AllocationCallbacks,
9885
0
        p_surface: *mut vk::SurfaceKHR,
9886
0
    ) -> vk::Result {
9887
0
        let global = Self::instance();
9888
0
        // vkCreateIOSSurfaceMVK
9889
0
        let instance_info = global.get_instance_info(instance).unwrap();
9890
0
        let dispatch_table = &instance_info.dispatch_table.mvk_ios_surface;
9891
0
        let layer_result = instance_info
9892
0
            .customized_info
9893
0
            .borrow()
9894
0
            .hooks()
9895
0
            .create_ios_surface_mvk(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
9896
0
                p_allocator.as_ref()
9897
0
            });
9898
0
        match layer_result {
9899
0
            LayerResult::Handled(res) => match res {
9900
0
                Ok(res) => {
9901
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
9902
0
                    vk::Result::SUCCESS
9903
                }
9904
0
                Err(e) => e,
9905
            },
9906
            LayerResult::Unhandled => unsafe {
9907
0
                (dispatch_table.create_ios_surface_mvk)(
9908
0
                    instance,
9909
0
                    p_create_info,
9910
0
                    p_allocator,
9911
0
                    p_surface,
9912
0
                )
9913
            },
9914
        }
9915
0
    }
9916
0
    extern "system" fn create_mac_os_surface_mvk(
9917
0
        instance: vk::Instance,
9918
0
        p_create_info: *const vk::MacOSSurfaceCreateInfoMVK,
9919
0
        p_allocator: *const vk::AllocationCallbacks,
9920
0
        p_surface: *mut vk::SurfaceKHR,
9921
0
    ) -> vk::Result {
9922
0
        let global = Self::instance();
9923
0
        // vkCreateMacOSSurfaceMVK
9924
0
        let instance_info = global.get_instance_info(instance).unwrap();
9925
0
        let dispatch_table = &instance_info.dispatch_table.mvk_macos_surface;
9926
0
        let layer_result = instance_info
9927
0
            .customized_info
9928
0
            .borrow()
9929
0
            .hooks()
9930
0
            .create_mac_os_surface_mvk(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
9931
0
                p_allocator.as_ref()
9932
0
            });
9933
0
        match layer_result {
9934
0
            LayerResult::Handled(res) => match res {
9935
0
                Ok(res) => {
9936
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
9937
0
                    vk::Result::SUCCESS
9938
                }
9939
0
                Err(e) => e,
9940
            },
9941
            LayerResult::Unhandled => unsafe {
9942
0
                (dispatch_table.create_mac_os_surface_mvk)(
9943
0
                    instance,
9944
0
                    p_create_info,
9945
0
                    p_allocator,
9946
0
                    p_surface,
9947
0
                )
9948
            },
9949
        }
9950
0
    }
9951
0
    extern "system" fn create_debug_utils_messenger_ext(
9952
0
        instance: vk::Instance,
9953
0
        p_create_info: *const vk::DebugUtilsMessengerCreateInfoEXT,
9954
0
        p_allocator: *const vk::AllocationCallbacks,
9955
0
        p_messenger: *mut vk::DebugUtilsMessengerEXT,
9956
0
    ) -> vk::Result {
9957
0
        let global = Self::instance();
9958
0
        // vkCreateDebugUtilsMessengerEXT
9959
0
        let instance_info = global.get_instance_info(instance).unwrap();
9960
0
        let dispatch_table = &instance_info.dispatch_table.ext_debug_utils;
9961
0
        let layer_result = instance_info
9962
0
            .customized_info
9963
0
            .borrow()
9964
0
            .hooks()
9965
0
            .create_debug_utils_messenger_ext(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
9966
0
                p_allocator.as_ref()
9967
0
            });
9968
0
        match layer_result {
9969
0
            LayerResult::Handled(res) => match res {
9970
0
                Ok(res) => {
9971
0
                    *unsafe { p_messenger.as_mut() }.unwrap() = res;
9972
0
                    vk::Result::SUCCESS
9973
                }
9974
0
                Err(e) => e,
9975
            },
9976
            LayerResult::Unhandled => unsafe {
9977
0
                (dispatch_table.create_debug_utils_messenger_ext)(
9978
0
                    instance,
9979
0
                    p_create_info,
9980
0
                    p_allocator,
9981
0
                    p_messenger,
9982
0
                )
9983
            },
9984
        }
9985
0
    }
9986
0
    extern "system" fn destroy_debug_utils_messenger_ext(
9987
0
        instance: vk::Instance,
9988
0
        messenger: vk::DebugUtilsMessengerEXT,
9989
0
        p_allocator: *const vk::AllocationCallbacks,
9990
0
    ) {
9991
0
        let global = Self::instance();
9992
0
        // vkDestroyDebugUtilsMessengerEXT
9993
0
        let instance_info = global.get_instance_info(instance).unwrap();
9994
0
        let dispatch_table = &instance_info.dispatch_table.ext_debug_utils;
9995
0
        let layer_result = instance_info
9996
0
            .customized_info
9997
0
            .borrow()
9998
0
            .hooks()
9999
0
            .destroy_debug_utils_messenger_ext(messenger, unsafe { p_allocator.as_ref() });
10000
0
        match layer_result {
10001
0
            LayerResult::Handled(res) => res,
10002
            LayerResult::Unhandled => unsafe {
10003
0
                (dispatch_table.destroy_debug_utils_messenger_ext)(instance, messenger, p_allocator)
10004
            },
10005
        }
10006
0
    }
10007
0
    extern "system" fn submit_debug_utils_message_ext(
10008
0
        instance: vk::Instance,
10009
0
        message_severity: vk::DebugUtilsMessageSeverityFlagsEXT,
10010
0
        message_types: vk::DebugUtilsMessageTypeFlagsEXT,
10011
0
        p_callback_data: *const vk::DebugUtilsMessengerCallbackDataEXT,
10012
0
    ) {
10013
0
        let global = Self::instance();
10014
0
        // vkSubmitDebugUtilsMessageEXT
10015
0
        let instance_info = global.get_instance_info(instance).unwrap();
10016
0
        let dispatch_table = &instance_info.dispatch_table.ext_debug_utils;
10017
0
        let layer_result = instance_info
10018
0
            .customized_info
10019
0
            .borrow()
10020
0
            .hooks()
10021
0
            .submit_debug_utils_message_ext(
10022
0
                message_severity,
10023
0
                message_types,
10024
0
                unsafe { p_callback_data.as_ref() }.unwrap(),
10025
0
            );
10026
0
        match layer_result {
10027
0
            LayerResult::Handled(res) => res,
10028
            LayerResult::Unhandled => unsafe {
10029
0
                (dispatch_table.submit_debug_utils_message_ext)(
10030
0
                    instance,
10031
0
                    message_severity,
10032
0
                    message_types,
10033
0
                    p_callback_data,
10034
0
                )
10035
            },
10036
        }
10037
0
    }
10038
0
    extern "system" fn get_physical_device_multisample_properties_ext(
10039
0
        physical_device: vk::PhysicalDevice,
10040
0
        samples: vk::SampleCountFlags,
10041
0
        p_multisample_properties: *mut vk::MultisamplePropertiesEXT,
10042
0
    ) {
10043
0
        let global = Self::instance();
10044
0
        // vkGetPhysicalDeviceMultisamplePropertiesEXT
10045
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10046
0
        let dispatch_table = &instance_info.dispatch_table.ext_sample_locations;
10047
0
        let layer_result = instance_info
10048
0
            .customized_info
10049
0
            .borrow()
10050
0
            .hooks()
10051
0
            .get_physical_device_multisample_properties_ext(
10052
0
                physical_device,
10053
0
                samples,
10054
0
                unsafe { ptr_as_uninit_mut(p_multisample_properties) }.unwrap(),
10055
0
            );
10056
0
        match layer_result {
10057
0
            LayerResult::Handled(res) => res,
10058
            LayerResult::Unhandled => unsafe {
10059
0
                (dispatch_table.get_physical_device_multisample_properties_ext)(
10060
0
                    physical_device,
10061
0
                    samples,
10062
0
                    p_multisample_properties,
10063
0
                )
10064
            },
10065
        }
10066
0
    }
10067
0
    extern "system" fn get_physical_device_calibrateable_time_domains_ext(
10068
0
        physical_device: vk::PhysicalDevice,
10069
0
        p_time_domain_count: *mut u32,
10070
0
        p_time_domains: *mut vk::TimeDomainEXT,
10071
0
    ) -> vk::Result {
10072
0
        let global = Self::instance();
10073
0
        // vkGetPhysicalDeviceCalibrateableTimeDomainsEXT
10074
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10075
0
        let dispatch_table = &instance_info.dispatch_table.ext_calibrated_timestamps;
10076
0
        let layer_result = instance_info
10077
0
            .customized_info
10078
0
            .borrow()
10079
0
            .hooks()
10080
0
            .get_physical_device_calibrateable_time_domains_ext(physical_device);
10081
0
        match layer_result {
10082
0
            LayerResult::Handled(res) => match res {
10083
0
                Ok(res) => unsafe {
10084
0
                    fill_vk_out_array(
10085
0
                        &res,
10086
0
                        NonNull::new(p_time_domain_count).unwrap(),
10087
0
                        p_time_domains,
10088
0
                    )
10089
                },
10090
0
                Err(e) => e,
10091
            },
10092
            LayerResult::Unhandled => unsafe {
10093
0
                (dispatch_table.get_physical_device_calibrateable_time_domains_ext)(
10094
0
                    physical_device,
10095
0
                    p_time_domain_count,
10096
0
                    p_time_domains,
10097
0
                )
10098
            },
10099
        }
10100
0
    }
10101
0
    extern "system" fn create_image_pipe_surface_fuchsia(
10102
0
        instance: vk::Instance,
10103
0
        p_create_info: *const vk::ImagePipeSurfaceCreateInfoFUCHSIA,
10104
0
        p_allocator: *const vk::AllocationCallbacks,
10105
0
        p_surface: *mut vk::SurfaceKHR,
10106
0
    ) -> vk::Result {
10107
0
        let global = Self::instance();
10108
0
        // vkCreateImagePipeSurfaceFUCHSIA
10109
0
        let instance_info = global.get_instance_info(instance).unwrap();
10110
0
        let dispatch_table = &instance_info.dispatch_table.fuchsia_imagepipe_surface;
10111
0
        let layer_result = instance_info
10112
0
            .customized_info
10113
0
            .borrow()
10114
0
            .hooks()
10115
0
            .create_image_pipe_surface_fuchsia(
10116
0
                unsafe { p_create_info.as_ref() }.unwrap(),
10117
0
                unsafe { p_allocator.as_ref() },
10118
0
            );
10119
0
        match layer_result {
10120
0
            LayerResult::Handled(res) => match res {
10121
0
                Ok(res) => {
10122
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
10123
0
                    vk::Result::SUCCESS
10124
                }
10125
0
                Err(e) => e,
10126
            },
10127
            LayerResult::Unhandled => unsafe {
10128
0
                (dispatch_table.create_image_pipe_surface_fuchsia)(
10129
0
                    instance,
10130
0
                    p_create_info,
10131
0
                    p_allocator,
10132
0
                    p_surface,
10133
0
                )
10134
            },
10135
        }
10136
0
    }
10137
0
    extern "system" fn create_metal_surface_ext(
10138
0
        instance: vk::Instance,
10139
0
        p_create_info: *const vk::MetalSurfaceCreateInfoEXT,
10140
0
        p_allocator: *const vk::AllocationCallbacks,
10141
0
        p_surface: *mut vk::SurfaceKHR,
10142
0
    ) -> vk::Result {
10143
0
        let global = Self::instance();
10144
0
        // vkCreateMetalSurfaceEXT
10145
0
        let instance_info = global.get_instance_info(instance).unwrap();
10146
0
        let dispatch_table = &instance_info.dispatch_table.ext_metal_surface;
10147
0
        let layer_result = instance_info
10148
0
            .customized_info
10149
0
            .borrow()
10150
0
            .hooks()
10151
0
            .create_metal_surface_ext(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
10152
0
                p_allocator.as_ref()
10153
0
            });
10154
0
        match layer_result {
10155
0
            LayerResult::Handled(res) => match res {
10156
0
                Ok(res) => {
10157
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
10158
0
                    vk::Result::SUCCESS
10159
                }
10160
0
                Err(e) => e,
10161
            },
10162
            LayerResult::Unhandled => unsafe {
10163
0
                (dispatch_table.create_metal_surface_ext)(
10164
0
                    instance,
10165
0
                    p_create_info,
10166
0
                    p_allocator,
10167
0
                    p_surface,
10168
0
                )
10169
            },
10170
        }
10171
0
    }
10172
0
    extern "system" fn get_physical_device_cooperative_matrix_properties_nv(
10173
0
        physical_device: vk::PhysicalDevice,
10174
0
        p_property_count: *mut u32,
10175
0
        p_properties: *mut vk::CooperativeMatrixPropertiesNV,
10176
0
    ) -> vk::Result {
10177
0
        let global = Self::instance();
10178
0
        // vkGetPhysicalDeviceCooperativeMatrixPropertiesNV
10179
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10180
0
        let dispatch_table = &instance_info.dispatch_table.nv_cooperative_matrix;
10181
0
        let layer_result = instance_info
10182
0
            .customized_info
10183
0
            .borrow()
10184
0
            .hooks()
10185
0
            .get_physical_device_cooperative_matrix_properties_nv(
10186
0
                physical_device,
10187
0
                unsafe { ptr_as_uninit_mut(p_property_count) }.unwrap(),
10188
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_properties, p_property_count) },
10189
0
            );
10190
0
        match layer_result {
10191
0
            LayerResult::Handled(res) => match res {
10192
0
                Ok(()) => vk::Result::SUCCESS,
10193
0
                Err(e) => e,
10194
            },
10195
            LayerResult::Unhandled => unsafe {
10196
0
                (dispatch_table.get_physical_device_cooperative_matrix_properties_nv)(
10197
0
                    physical_device,
10198
0
                    p_property_count,
10199
0
                    p_properties,
10200
0
                )
10201
            },
10202
        }
10203
0
    }
10204
0
    extern "system" fn get_physical_device_supported_framebuffer_mixed_samples_combinations_nv(
10205
0
        physical_device: vk::PhysicalDevice,
10206
0
        p_combination_count: *mut u32,
10207
0
        p_combinations: *mut vk::FramebufferMixedSamplesCombinationNV,
10208
0
    ) -> vk::Result {
10209
0
        let global = Self::instance();
10210
0
        // vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV
10211
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10212
0
        let dispatch_table = &instance_info.dispatch_table.nv_coverage_reduction_mode;
10213
0
        let layer_result = instance_info
10214
0
            .customized_info
10215
0
            .borrow()
10216
0
            .hooks()
10217
0
            .get_physical_device_supported_framebuffer_mixed_samples_combinations_nv(
10218
0
                physical_device,
10219
0
                unsafe { ptr_as_uninit_mut(p_combination_count) }.unwrap(),
10220
0
                unsafe {
10221
0
                    maybe_uninit_slice_from_raw_parts_mut(p_combinations, p_combination_count)
10222
0
                },
10223
0
            );
10224
0
        match layer_result {
10225
0
            LayerResult::Handled(res) => match res {
10226
0
                Ok(()) => vk::Result::SUCCESS,
10227
0
                Err(e) => e,
10228
            },
10229
            LayerResult::Unhandled => unsafe {
10230
0
                (dispatch_table
10231
0
                    .get_physical_device_supported_framebuffer_mixed_samples_combinations_nv)(
10232
0
                    physical_device,
10233
0
                    p_combination_count,
10234
0
                    p_combinations,
10235
0
                )
10236
            },
10237
        }
10238
0
    }
10239
0
    extern "system" fn get_physical_device_surface_present_modes2_ext(
10240
0
        physical_device: vk::PhysicalDevice,
10241
0
        p_surface_info: *const vk::PhysicalDeviceSurfaceInfo2KHR,
10242
0
        p_present_mode_count: *mut u32,
10243
0
        p_present_modes: *mut vk::PresentModeKHR,
10244
0
    ) -> vk::Result {
10245
0
        let global = Self::instance();
10246
0
        // vkGetPhysicalDeviceSurfacePresentModes2EXT
10247
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10248
0
        let dispatch_table = &instance_info.dispatch_table.ext_full_screen_exclusive;
10249
0
        let layer_result = instance_info
10250
0
            .customized_info
10251
0
            .borrow()
10252
0
            .hooks()
10253
0
            .get_physical_device_surface_present_modes2_ext(
10254
0
                physical_device,
10255
0
                unsafe { p_surface_info.as_ref() }.unwrap(),
10256
0
            );
10257
0
        match layer_result {
10258
0
            LayerResult::Handled(res) => match res {
10259
0
                Ok(res) => unsafe {
10260
0
                    fill_vk_out_array(
10261
0
                        &res,
10262
0
                        NonNull::new(p_present_mode_count).unwrap(),
10263
0
                        p_present_modes,
10264
0
                    )
10265
                },
10266
0
                Err(e) => e,
10267
            },
10268
            LayerResult::Unhandled => unsafe {
10269
0
                (dispatch_table.get_physical_device_surface_present_modes2_ext)(
10270
0
                    physical_device,
10271
0
                    p_surface_info,
10272
0
                    p_present_mode_count,
10273
0
                    p_present_modes,
10274
0
                )
10275
            },
10276
        }
10277
0
    }
10278
0
    extern "system" fn create_headless_surface_ext(
10279
0
        instance: vk::Instance,
10280
0
        p_create_info: *const vk::HeadlessSurfaceCreateInfoEXT,
10281
0
        p_allocator: *const vk::AllocationCallbacks,
10282
0
        p_surface: *mut vk::SurfaceKHR,
10283
0
    ) -> vk::Result {
10284
0
        let global = Self::instance();
10285
0
        // vkCreateHeadlessSurfaceEXT
10286
0
        let instance_info = global.get_instance_info(instance).unwrap();
10287
0
        let dispatch_table = &instance_info.dispatch_table.ext_headless_surface;
10288
0
        let layer_result = instance_info
10289
0
            .customized_info
10290
0
            .borrow()
10291
0
            .hooks()
10292
0
            .create_headless_surface_ext(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
10293
0
                p_allocator.as_ref()
10294
0
            });
10295
0
        match layer_result {
10296
0
            LayerResult::Handled(res) => match res {
10297
0
                Ok(res) => {
10298
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
10299
0
                    vk::Result::SUCCESS
10300
                }
10301
0
                Err(e) => e,
10302
            },
10303
            LayerResult::Unhandled => unsafe {
10304
0
                (dispatch_table.create_headless_surface_ext)(
10305
0
                    instance,
10306
0
                    p_create_info,
10307
0
                    p_allocator,
10308
0
                    p_surface,
10309
0
                )
10310
            },
10311
        }
10312
0
    }
10313
0
    extern "system" fn acquire_drm_display_ext(
10314
0
        physical_device: vk::PhysicalDevice,
10315
0
        drm_fd: i32,
10316
0
        display: vk::DisplayKHR,
10317
0
    ) -> vk::Result {
10318
0
        let global = Self::instance();
10319
0
        // vkAcquireDrmDisplayEXT
10320
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10321
0
        let dispatch_table = &instance_info.dispatch_table.ext_acquire_drm_display;
10322
0
        let layer_result = instance_info
10323
0
            .customized_info
10324
0
            .borrow()
10325
0
            .hooks()
10326
0
            .acquire_drm_display_ext(physical_device, drm_fd, display);
10327
0
        match layer_result {
10328
0
            LayerResult::Handled(res) => match res {
10329
0
                Ok(()) => vk::Result::SUCCESS,
10330
0
                Err(e) => e,
10331
            },
10332
            LayerResult::Unhandled => unsafe {
10333
0
                (dispatch_table.acquire_drm_display_ext)(physical_device, drm_fd, display)
10334
            },
10335
        }
10336
0
    }
10337
0
    extern "system" fn get_drm_display_ext(
10338
0
        physical_device: vk::PhysicalDevice,
10339
0
        drm_fd: i32,
10340
0
        connector_id: u32,
10341
0
        display: *mut vk::DisplayKHR,
10342
0
    ) -> vk::Result {
10343
0
        let global = Self::instance();
10344
0
        // vkGetDrmDisplayEXT
10345
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10346
0
        let dispatch_table = &instance_info.dispatch_table.ext_acquire_drm_display;
10347
0
        let layer_result = instance_info
10348
0
            .customized_info
10349
0
            .borrow()
10350
0
            .hooks()
10351
0
            .get_drm_display_ext(physical_device, drm_fd, connector_id);
10352
0
        match layer_result {
10353
0
            LayerResult::Handled(res) => match res {
10354
0
                Ok(res) => {
10355
0
                    *unsafe { display.as_mut() }.unwrap() = res;
10356
0
                    vk::Result::SUCCESS
10357
                }
10358
0
                Err(e) => e,
10359
            },
10360
            LayerResult::Unhandled => unsafe {
10361
0
                (dispatch_table.get_drm_display_ext)(physical_device, drm_fd, connector_id, display)
10362
            },
10363
        }
10364
0
    }
10365
0
    extern "system" fn acquire_winrt_display_nv(
10366
0
        physical_device: vk::PhysicalDevice,
10367
0
        display: vk::DisplayKHR,
10368
0
    ) -> vk::Result {
10369
0
        let global = Self::instance();
10370
0
        // vkAcquireWinrtDisplayNV
10371
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10372
0
        let dispatch_table = &instance_info.dispatch_table.nv_acquire_winrt_display;
10373
0
        let layer_result = instance_info
10374
0
            .customized_info
10375
0
            .borrow()
10376
0
            .hooks()
10377
0
            .acquire_winrt_display_nv(physical_device, display);
10378
0
        match layer_result {
10379
0
            LayerResult::Handled(res) => match res {
10380
0
                Ok(()) => vk::Result::SUCCESS,
10381
0
                Err(e) => e,
10382
            },
10383
            LayerResult::Unhandled => unsafe {
10384
0
                (dispatch_table.acquire_winrt_display_nv)(physical_device, display)
10385
            },
10386
        }
10387
0
    }
10388
0
    extern "system" fn get_winrt_display_nv(
10389
0
        physical_device: vk::PhysicalDevice,
10390
0
        device_relative_id: u32,
10391
0
        p_display: *mut vk::DisplayKHR,
10392
0
    ) -> vk::Result {
10393
0
        let global = Self::instance();
10394
0
        // vkGetWinrtDisplayNV
10395
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10396
0
        let dispatch_table = &instance_info.dispatch_table.nv_acquire_winrt_display;
10397
0
        let layer_result = instance_info
10398
0
            .customized_info
10399
0
            .borrow()
10400
0
            .hooks()
10401
0
            .get_winrt_display_nv(physical_device, device_relative_id);
10402
0
        match layer_result {
10403
0
            LayerResult::Handled(res) => match res {
10404
0
                Ok(res) => {
10405
0
                    *unsafe { p_display.as_mut() }.unwrap() = res;
10406
0
                    vk::Result::SUCCESS
10407
                }
10408
0
                Err(e) => e,
10409
            },
10410
            LayerResult::Unhandled => unsafe {
10411
0
                (dispatch_table.get_winrt_display_nv)(
10412
0
                    physical_device,
10413
0
                    device_relative_id,
10414
0
                    p_display,
10415
0
                )
10416
            },
10417
        }
10418
0
    }
10419
0
    extern "system" fn create_direct_fb_surface_ext(
10420
0
        instance: vk::Instance,
10421
0
        p_create_info: *const vk::DirectFBSurfaceCreateInfoEXT,
10422
0
        p_allocator: *const vk::AllocationCallbacks,
10423
0
        p_surface: *mut vk::SurfaceKHR,
10424
0
    ) -> vk::Result {
10425
0
        let global = Self::instance();
10426
0
        // vkCreateDirectFBSurfaceEXT
10427
0
        let instance_info = global.get_instance_info(instance).unwrap();
10428
0
        let dispatch_table = &instance_info.dispatch_table.ext_directfb_surface;
10429
0
        let layer_result = instance_info
10430
0
            .customized_info
10431
0
            .borrow()
10432
0
            .hooks()
10433
0
            .create_direct_fb_surface_ext(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
10434
0
                p_allocator.as_ref()
10435
0
            });
10436
0
        match layer_result {
10437
0
            LayerResult::Handled(res) => match res {
10438
0
                Ok(res) => {
10439
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
10440
0
                    vk::Result::SUCCESS
10441
                }
10442
0
                Err(e) => e,
10443
            },
10444
            LayerResult::Unhandled => unsafe {
10445
0
                (dispatch_table.create_direct_fb_surface_ext)(
10446
0
                    instance,
10447
0
                    p_create_info,
10448
0
                    p_allocator,
10449
0
                    p_surface,
10450
0
                )
10451
            },
10452
        }
10453
0
    }
10454
0
    extern "system" fn get_physical_device_direct_fb_presentation_support_ext(
10455
0
        physical_device: vk::PhysicalDevice,
10456
0
        queue_family_index: u32,
10457
0
        dfb: *mut vk::IDirectFB,
10458
0
    ) -> vk::Bool32 {
10459
0
        let global = Self::instance();
10460
0
        // vkGetPhysicalDeviceDirectFBPresentationSupportEXT
10461
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10462
0
        let dispatch_table = &instance_info.dispatch_table.ext_directfb_surface;
10463
0
        let layer_result = instance_info
10464
0
            .customized_info
10465
0
            .borrow()
10466
0
            .hooks()
10467
0
            .get_physical_device_direct_fb_presentation_support_ext(
10468
0
                physical_device,
10469
0
                queue_family_index,
10470
0
                unsafe { ptr_as_uninit_mut(dfb) }.unwrap(),
10471
0
            );
10472
0
        match layer_result {
10473
0
            LayerResult::Handled(res) => {
10474
0
                if res {
10475
0
                    vk::TRUE
10476
                } else {
10477
0
                    vk::FALSE
10478
                }
10479
            }
10480
            LayerResult::Unhandled => unsafe {
10481
0
                (dispatch_table.get_physical_device_direct_fb_presentation_support_ext)(
10482
0
                    physical_device,
10483
0
                    queue_family_index,
10484
0
                    dfb,
10485
0
                )
10486
            },
10487
        }
10488
0
    }
10489
0
    extern "system" fn create_screen_surface_qnx(
10490
0
        instance: vk::Instance,
10491
0
        p_create_info: *const vk::ScreenSurfaceCreateInfoQNX,
10492
0
        p_allocator: *const vk::AllocationCallbacks,
10493
0
        p_surface: *mut vk::SurfaceKHR,
10494
0
    ) -> vk::Result {
10495
0
        let global = Self::instance();
10496
0
        // vkCreateScreenSurfaceQNX
10497
0
        let instance_info = global.get_instance_info(instance).unwrap();
10498
0
        let dispatch_table = &instance_info.dispatch_table.qnx_screen_surface;
10499
0
        let layer_result = instance_info
10500
0
            .customized_info
10501
0
            .borrow()
10502
0
            .hooks()
10503
0
            .create_screen_surface_qnx(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
10504
0
                p_allocator.as_ref()
10505
0
            });
10506
0
        match layer_result {
10507
0
            LayerResult::Handled(res) => match res {
10508
0
                Ok(res) => {
10509
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
10510
0
                    vk::Result::SUCCESS
10511
                }
10512
0
                Err(e) => e,
10513
            },
10514
            LayerResult::Unhandled => unsafe {
10515
0
                (dispatch_table.create_screen_surface_qnx)(
10516
0
                    instance,
10517
0
                    p_create_info,
10518
0
                    p_allocator,
10519
0
                    p_surface,
10520
0
                )
10521
            },
10522
        }
10523
0
    }
10524
0
    extern "system" fn get_physical_device_screen_presentation_support_qnx(
10525
0
        physical_device: vk::PhysicalDevice,
10526
0
        queue_family_index: u32,
10527
0
        window: *mut vk::_screen_window,
10528
0
    ) -> vk::Bool32 {
10529
0
        let global = Self::instance();
10530
0
        // vkGetPhysicalDeviceScreenPresentationSupportQNX
10531
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10532
0
        let dispatch_table = &instance_info.dispatch_table.qnx_screen_surface;
10533
0
        let layer_result = instance_info
10534
0
            .customized_info
10535
0
            .borrow()
10536
0
            .hooks()
10537
0
            .get_physical_device_screen_presentation_support_qnx(
10538
0
                physical_device,
10539
0
                queue_family_index,
10540
0
                window,
10541
0
            );
10542
0
        match layer_result {
10543
0
            LayerResult::Handled(res) => {
10544
0
                if res {
10545
0
                    vk::TRUE
10546
                } else {
10547
0
                    vk::FALSE
10548
                }
10549
            }
10550
            LayerResult::Unhandled => unsafe {
10551
0
                (dispatch_table.get_physical_device_screen_presentation_support_qnx)(
10552
0
                    physical_device,
10553
0
                    queue_family_index,
10554
0
                    window,
10555
0
                )
10556
            },
10557
        }
10558
0
    }
10559
0
    extern "system" fn get_physical_device_optical_flow_image_formats_nv(
10560
0
        physical_device: vk::PhysicalDevice,
10561
0
        p_optical_flow_image_format_info: *const vk::OpticalFlowImageFormatInfoNV,
10562
0
        p_format_count: *mut u32,
10563
0
        p_image_format_properties: *mut vk::OpticalFlowImageFormatPropertiesNV,
10564
0
    ) -> vk::Result {
10565
0
        let global = Self::instance();
10566
0
        // vkGetPhysicalDeviceOpticalFlowImageFormatsNV
10567
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10568
0
        let dispatch_table = &instance_info.dispatch_table.nv_optical_flow;
10569
0
        let layer_result = instance_info
10570
0
            .customized_info
10571
0
            .borrow()
10572
0
            .hooks()
10573
0
            .get_physical_device_optical_flow_image_formats_nv(
10574
0
                physical_device,
10575
0
                unsafe { p_optical_flow_image_format_info.as_ref() }.unwrap(),
10576
0
                unsafe { ptr_as_uninit_mut(p_format_count) }.unwrap(),
10577
0
                unsafe {
10578
0
                    maybe_uninit_slice_from_raw_parts_mut(p_image_format_properties, p_format_count)
10579
0
                },
10580
0
            );
10581
0
        match layer_result {
10582
0
            LayerResult::Handled(res) => match res {
10583
0
                Ok(()) => vk::Result::SUCCESS,
10584
0
                Err(e) => e,
10585
            },
10586
            LayerResult::Unhandled => unsafe {
10587
0
                (dispatch_table.get_physical_device_optical_flow_image_formats_nv)(
10588
0
                    physical_device,
10589
0
                    p_optical_flow_image_format_info,
10590
0
                    p_format_count,
10591
0
                    p_image_format_properties,
10592
0
                )
10593
            },
10594
        }
10595
0
    }
10596
0
    extern "system" fn get_device_queue(
10597
0
        device: vk::Device,
10598
0
        queue_family_index: u32,
10599
0
        queue_index: u32,
10600
0
        p_queue: *mut vk::Queue,
10601
0
    ) {
10602
0
        let global = Self::instance();
10603
0
        // vkGetDeviceQueue
10604
0
        let device_info = global.get_device_info(device).unwrap();
10605
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10606
0
        let layer_result = device_info
10607
0
            .customized_info
10608
0
            .borrow()
10609
0
            .hooks()
10610
0
            .get_device_queue(queue_family_index, queue_index);
10611
0
        match layer_result {
10612
0
            LayerResult::Handled(res) => {
10613
0
                *unsafe { p_queue.as_mut() }.unwrap() = res;
10614
0
            }
10615
            LayerResult::Unhandled => unsafe {
10616
0
                (dispatch_table.get_device_queue)(device, queue_family_index, queue_index, p_queue)
10617
            },
10618
        }
10619
0
    }
10620
0
    extern "system" fn queue_submit(
10621
0
        queue: vk::Queue,
10622
0
        submit_count: u32,
10623
0
        p_submits: *const vk::SubmitInfo,
10624
0
        fence: vk::Fence,
10625
0
    ) -> vk::Result {
10626
0
        let global = Self::instance();
10627
0
        // vkQueueSubmit
10628
0
        let device_info = global.get_device_info(queue).unwrap();
10629
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10630
0
        let layer_result = device_info.customized_info.borrow().hooks().queue_submit(
10631
0
            queue,
10632
0
            unsafe { slice_from_raw_parts(p_submits, submit_count) },
10633
0
            fence,
10634
0
        );
10635
0
        match layer_result {
10636
0
            LayerResult::Handled(res) => match res {
10637
0
                Ok(()) => vk::Result::SUCCESS,
10638
0
                Err(e) => e,
10639
            },
10640
            LayerResult::Unhandled => unsafe {
10641
0
                (dispatch_table.queue_submit)(queue, submit_count, p_submits, fence)
10642
            },
10643
        }
10644
0
    }
10645
0
    extern "system" fn queue_wait_idle(queue: vk::Queue) -> vk::Result {
10646
0
        let global = Self::instance();
10647
0
        // vkQueueWaitIdle
10648
0
        let device_info = global.get_device_info(queue).unwrap();
10649
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10650
0
        let layer_result = device_info
10651
0
            .customized_info
10652
0
            .borrow()
10653
0
            .hooks()
10654
0
            .queue_wait_idle(queue);
10655
0
        match layer_result {
10656
0
            LayerResult::Handled(res) => match res {
10657
0
                Ok(()) => vk::Result::SUCCESS,
10658
0
                Err(e) => e,
10659
            },
10660
0
            LayerResult::Unhandled => unsafe { (dispatch_table.queue_wait_idle)(queue) },
10661
        }
10662
0
    }
10663
0
    extern "system" fn device_wait_idle(device: vk::Device) -> vk::Result {
10664
0
        let global = Self::instance();
10665
0
        // vkDeviceWaitIdle
10666
0
        let device_info = global.get_device_info(device).unwrap();
10667
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10668
0
        let layer_result = device_info
10669
0
            .customized_info
10670
0
            .borrow()
10671
0
            .hooks()
10672
0
            .device_wait_idle();
10673
0
        match layer_result {
10674
0
            LayerResult::Handled(res) => match res {
10675
0
                Ok(()) => vk::Result::SUCCESS,
10676
0
                Err(e) => e,
10677
            },
10678
0
            LayerResult::Unhandled => unsafe { (dispatch_table.device_wait_idle)(device) },
10679
        }
10680
0
    }
10681
0
    extern "system" fn allocate_memory(
10682
0
        device: vk::Device,
10683
0
        p_allocate_info: *const vk::MemoryAllocateInfo,
10684
0
        p_allocator: *const vk::AllocationCallbacks,
10685
0
        p_memory: *mut vk::DeviceMemory,
10686
0
    ) -> vk::Result {
10687
0
        let global = Self::instance();
10688
0
        // vkAllocateMemory
10689
0
        let device_info = global.get_device_info(device).unwrap();
10690
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10691
0
        let layer_result = device_info
10692
0
            .customized_info
10693
0
            .borrow()
10694
0
            .hooks()
10695
0
            .allocate_memory(unsafe { p_allocate_info.as_ref() }.unwrap(), unsafe {
10696
0
                p_allocator.as_ref()
10697
0
            });
10698
0
        match layer_result {
10699
0
            LayerResult::Handled(res) => match res {
10700
0
                Ok(res) => {
10701
0
                    *unsafe { p_memory.as_mut() }.unwrap() = res;
10702
0
                    vk::Result::SUCCESS
10703
                }
10704
0
                Err(e) => e,
10705
            },
10706
            LayerResult::Unhandled => unsafe {
10707
0
                (dispatch_table.allocate_memory)(device, p_allocate_info, p_allocator, p_memory)
10708
            },
10709
        }
10710
0
    }
10711
0
    extern "system" fn free_memory(
10712
0
        device: vk::Device,
10713
0
        memory: vk::DeviceMemory,
10714
0
        p_allocator: *const vk::AllocationCallbacks,
10715
0
    ) {
10716
0
        let global = Self::instance();
10717
0
        // vkFreeMemory
10718
0
        let device_info = global.get_device_info(device).unwrap();
10719
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10720
0
        let layer_result = device_info
10721
0
            .customized_info
10722
0
            .borrow()
10723
0
            .hooks()
10724
0
            .free_memory(memory, unsafe { p_allocator.as_ref() });
10725
0
        match layer_result {
10726
0
            LayerResult::Handled(res) => res,
10727
            LayerResult::Unhandled => unsafe {
10728
0
                (dispatch_table.free_memory)(device, memory, p_allocator)
10729
            },
10730
        }
10731
0
    }
10732
0
    extern "system" fn map_memory(
10733
0
        device: vk::Device,
10734
0
        memory: vk::DeviceMemory,
10735
0
        offset: vk::DeviceSize,
10736
0
        size: vk::DeviceSize,
10737
0
        flags: vk::MemoryMapFlags,
10738
0
        pp_data: *mut *mut c_void,
10739
0
    ) -> vk::Result {
10740
0
        let global = Self::instance();
10741
0
        // vkMapMemory
10742
0
        let device_info = global.get_device_info(device).unwrap();
10743
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10744
0
        let layer_result = device_info
10745
0
            .customized_info
10746
0
            .borrow()
10747
0
            .hooks()
10748
0
            .map_memory(memory, offset, size, flags);
10749
0
        match layer_result {
10750
0
            LayerResult::Handled(res) => match res {
10751
0
                Ok(res) => {
10752
0
                    *unsafe { pp_data.as_mut() }.unwrap() = res.unwrap_or(std::ptr::null_mut());
10753
0
                    vk::Result::SUCCESS
10754
                }
10755
0
                Err(e) => e,
10756
            },
10757
            LayerResult::Unhandled => unsafe {
10758
0
                (dispatch_table.map_memory)(device, memory, offset, size, flags, pp_data)
10759
            },
10760
        }
10761
0
    }
10762
0
    extern "system" fn unmap_memory(device: vk::Device, memory: vk::DeviceMemory) {
10763
0
        let global = Self::instance();
10764
0
        // vkUnmapMemory
10765
0
        let device_info = global.get_device_info(device).unwrap();
10766
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10767
0
        let layer_result = device_info
10768
0
            .customized_info
10769
0
            .borrow()
10770
0
            .hooks()
10771
0
            .unmap_memory(memory);
10772
0
        match layer_result {
10773
0
            LayerResult::Handled(res) => res,
10774
0
            LayerResult::Unhandled => unsafe { (dispatch_table.unmap_memory)(device, memory) },
10775
        }
10776
0
    }
10777
0
    extern "system" fn flush_mapped_memory_ranges(
10778
0
        device: vk::Device,
10779
0
        memory_range_count: u32,
10780
0
        p_memory_ranges: *const vk::MappedMemoryRange,
10781
0
    ) -> vk::Result {
10782
0
        let global = Self::instance();
10783
0
        // vkFlushMappedMemoryRanges
10784
0
        let device_info = global.get_device_info(device).unwrap();
10785
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10786
0
        let layer_result = device_info
10787
0
            .customized_info
10788
0
            .borrow()
10789
0
            .hooks()
10790
0
            .flush_mapped_memory_ranges(unsafe {
10791
0
                slice_from_raw_parts(p_memory_ranges, memory_range_count)
10792
0
            });
10793
0
        match layer_result {
10794
0
            LayerResult::Handled(res) => match res {
10795
0
                Ok(()) => vk::Result::SUCCESS,
10796
0
                Err(e) => e,
10797
            },
10798
            LayerResult::Unhandled => unsafe {
10799
0
                (dispatch_table.flush_mapped_memory_ranges)(
10800
0
                    device,
10801
0
                    memory_range_count,
10802
0
                    p_memory_ranges,
10803
0
                )
10804
            },
10805
        }
10806
0
    }
10807
0
    extern "system" fn invalidate_mapped_memory_ranges(
10808
0
        device: vk::Device,
10809
0
        memory_range_count: u32,
10810
0
        p_memory_ranges: *const vk::MappedMemoryRange,
10811
0
    ) -> vk::Result {
10812
0
        let global = Self::instance();
10813
0
        // vkInvalidateMappedMemoryRanges
10814
0
        let device_info = global.get_device_info(device).unwrap();
10815
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10816
0
        let layer_result = device_info
10817
0
            .customized_info
10818
0
            .borrow()
10819
0
            .hooks()
10820
0
            .invalidate_mapped_memory_ranges(unsafe {
10821
0
                slice_from_raw_parts(p_memory_ranges, memory_range_count)
10822
0
            });
10823
0
        match layer_result {
10824
0
            LayerResult::Handled(res) => match res {
10825
0
                Ok(()) => vk::Result::SUCCESS,
10826
0
                Err(e) => e,
10827
            },
10828
            LayerResult::Unhandled => unsafe {
10829
0
                (dispatch_table.invalidate_mapped_memory_ranges)(
10830
0
                    device,
10831
0
                    memory_range_count,
10832
0
                    p_memory_ranges,
10833
0
                )
10834
            },
10835
        }
10836
0
    }
10837
0
    extern "system" fn get_device_memory_commitment(
10838
0
        device: vk::Device,
10839
0
        memory: vk::DeviceMemory,
10840
0
        p_committed_memory_in_bytes: *mut vk::DeviceSize,
10841
0
    ) {
10842
0
        let global = Self::instance();
10843
0
        // vkGetDeviceMemoryCommitment
10844
0
        let device_info = global.get_device_info(device).unwrap();
10845
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10846
0
        let layer_result = device_info
10847
0
            .customized_info
10848
0
            .borrow()
10849
0
            .hooks()
10850
0
            .get_device_memory_commitment(memory);
10851
0
        match layer_result {
10852
0
            LayerResult::Handled(res) => {
10853
0
                *unsafe { p_committed_memory_in_bytes.as_mut() }.unwrap() = res;
10854
0
            }
10855
            LayerResult::Unhandled => unsafe {
10856
0
                (dispatch_table.get_device_memory_commitment)(
10857
0
                    device,
10858
0
                    memory,
10859
0
                    p_committed_memory_in_bytes,
10860
0
                )
10861
            },
10862
        }
10863
0
    }
10864
0
    extern "system" fn bind_buffer_memory(
10865
0
        device: vk::Device,
10866
0
        buffer: vk::Buffer,
10867
0
        memory: vk::DeviceMemory,
10868
0
        memory_offset: vk::DeviceSize,
10869
0
    ) -> vk::Result {
10870
0
        let global = Self::instance();
10871
0
        // vkBindBufferMemory
10872
0
        let device_info = global.get_device_info(device).unwrap();
10873
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10874
0
        let layer_result = device_info
10875
0
            .customized_info
10876
0
            .borrow()
10877
0
            .hooks()
10878
0
            .bind_buffer_memory(buffer, memory, memory_offset);
10879
0
        match layer_result {
10880
0
            LayerResult::Handled(res) => match res {
10881
0
                Ok(()) => vk::Result::SUCCESS,
10882
0
                Err(e) => e,
10883
            },
10884
            LayerResult::Unhandled => unsafe {
10885
0
                (dispatch_table.bind_buffer_memory)(device, buffer, memory, memory_offset)
10886
            },
10887
        }
10888
0
    }
10889
0
    extern "system" fn bind_image_memory(
10890
0
        device: vk::Device,
10891
0
        image: vk::Image,
10892
0
        memory: vk::DeviceMemory,
10893
0
        memory_offset: vk::DeviceSize,
10894
0
    ) -> vk::Result {
10895
0
        let global = Self::instance();
10896
0
        // vkBindImageMemory
10897
0
        let device_info = global.get_device_info(device).unwrap();
10898
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10899
0
        let layer_result = device_info
10900
0
            .customized_info
10901
0
            .borrow()
10902
0
            .hooks()
10903
0
            .bind_image_memory(image, memory, memory_offset);
10904
0
        match layer_result {
10905
0
            LayerResult::Handled(res) => match res {
10906
0
                Ok(()) => vk::Result::SUCCESS,
10907
0
                Err(e) => e,
10908
            },
10909
            LayerResult::Unhandled => unsafe {
10910
0
                (dispatch_table.bind_image_memory)(device, image, memory, memory_offset)
10911
            },
10912
        }
10913
0
    }
10914
0
    extern "system" fn get_buffer_memory_requirements(
10915
0
        device: vk::Device,
10916
0
        buffer: vk::Buffer,
10917
0
        p_memory_requirements: *mut vk::MemoryRequirements,
10918
0
    ) {
10919
0
        let global = Self::instance();
10920
0
        // vkGetBufferMemoryRequirements
10921
0
        let device_info = global.get_device_info(device).unwrap();
10922
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10923
0
        let layer_result = device_info
10924
0
            .customized_info
10925
0
            .borrow()
10926
0
            .hooks()
10927
0
            .get_buffer_memory_requirements(
10928
0
                buffer,
10929
0
                unsafe { ptr_as_uninit_mut(p_memory_requirements) }.unwrap(),
10930
0
            );
10931
0
        match layer_result {
10932
0
            LayerResult::Handled(res) => res,
10933
            LayerResult::Unhandled => unsafe {
10934
0
                (dispatch_table.get_buffer_memory_requirements)(
10935
0
                    device,
10936
0
                    buffer,
10937
0
                    p_memory_requirements,
10938
0
                )
10939
            },
10940
        }
10941
0
    }
10942
0
    extern "system" fn get_image_memory_requirements(
10943
0
        device: vk::Device,
10944
0
        image: vk::Image,
10945
0
        p_memory_requirements: *mut vk::MemoryRequirements,
10946
0
    ) {
10947
0
        let global = Self::instance();
10948
0
        // vkGetImageMemoryRequirements
10949
0
        let device_info = global.get_device_info(device).unwrap();
10950
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10951
0
        let layer_result = device_info
10952
0
            .customized_info
10953
0
            .borrow()
10954
0
            .hooks()
10955
0
            .get_image_memory_requirements(
10956
0
                image,
10957
0
                unsafe { ptr_as_uninit_mut(p_memory_requirements) }.unwrap(),
10958
0
            );
10959
0
        match layer_result {
10960
0
            LayerResult::Handled(res) => res,
10961
            LayerResult::Unhandled => unsafe {
10962
0
                (dispatch_table.get_image_memory_requirements)(device, image, p_memory_requirements)
10963
            },
10964
        }
10965
0
    }
10966
0
    extern "system" fn get_image_sparse_memory_requirements(
10967
0
        device: vk::Device,
10968
0
        image: vk::Image,
10969
0
        p_sparse_memory_requirement_count: *mut u32,
10970
0
        p_sparse_memory_requirements: *mut vk::SparseImageMemoryRequirements,
10971
0
    ) {
10972
0
        let global = Self::instance();
10973
0
        // vkGetImageSparseMemoryRequirements
10974
0
        let device_info = global.get_device_info(device).unwrap();
10975
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10976
0
        let layer_result = device_info
10977
0
            .customized_info
10978
0
            .borrow()
10979
0
            .hooks()
10980
0
            .get_image_sparse_memory_requirements(
10981
0
                image,
10982
0
                unsafe { ptr_as_uninit_mut(p_sparse_memory_requirement_count) }.unwrap(),
10983
0
                unsafe {
10984
0
                    maybe_uninit_slice_from_raw_parts_mut(
10985
0
                        p_sparse_memory_requirements,
10986
0
                        p_sparse_memory_requirement_count,
10987
0
                    )
10988
0
                },
10989
0
            );
10990
0
        match layer_result {
10991
0
            LayerResult::Handled(res) => res,
10992
            LayerResult::Unhandled => unsafe {
10993
0
                (dispatch_table.get_image_sparse_memory_requirements)(
10994
0
                    device,
10995
0
                    image,
10996
0
                    p_sparse_memory_requirement_count,
10997
0
                    p_sparse_memory_requirements,
10998
0
                )
10999
            },
11000
        }
11001
0
    }
11002
0
    extern "system" fn queue_bind_sparse(
11003
0
        queue: vk::Queue,
11004
0
        bind_info_count: u32,
11005
0
        p_bind_info: *const vk::BindSparseInfo,
11006
0
        fence: vk::Fence,
11007
0
    ) -> vk::Result {
11008
0
        let global = Self::instance();
11009
0
        // vkQueueBindSparse
11010
0
        let device_info = global.get_device_info(queue).unwrap();
11011
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11012
0
        let layer_result = device_info
11013
0
            .customized_info
11014
0
            .borrow()
11015
0
            .hooks()
11016
0
            .queue_bind_sparse(
11017
0
                queue,
11018
0
                unsafe { slice_from_raw_parts(p_bind_info, bind_info_count) },
11019
0
                fence,
11020
0
            );
11021
0
        match layer_result {
11022
0
            LayerResult::Handled(res) => match res {
11023
0
                Ok(()) => vk::Result::SUCCESS,
11024
0
                Err(e) => e,
11025
            },
11026
            LayerResult::Unhandled => unsafe {
11027
0
                (dispatch_table.queue_bind_sparse)(queue, bind_info_count, p_bind_info, fence)
11028
            },
11029
        }
11030
0
    }
11031
0
    extern "system" fn create_fence(
11032
0
        device: vk::Device,
11033
0
        p_create_info: *const vk::FenceCreateInfo,
11034
0
        p_allocator: *const vk::AllocationCallbacks,
11035
0
        p_fence: *mut vk::Fence,
11036
0
    ) -> vk::Result {
11037
0
        let global = Self::instance();
11038
0
        // vkCreateFence
11039
0
        let device_info = global.get_device_info(device).unwrap();
11040
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11041
0
        let layer_result = device_info
11042
0
            .customized_info
11043
0
            .borrow()
11044
0
            .hooks()
11045
0
            .create_fence(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11046
0
                p_allocator.as_ref()
11047
0
            });
11048
0
        match layer_result {
11049
0
            LayerResult::Handled(res) => match res {
11050
0
                Ok(res) => {
11051
0
                    *unsafe { p_fence.as_mut() }.unwrap() = res;
11052
0
                    vk::Result::SUCCESS
11053
                }
11054
0
                Err(e) => e,
11055
            },
11056
            LayerResult::Unhandled => unsafe {
11057
0
                (dispatch_table.create_fence)(device, p_create_info, p_allocator, p_fence)
11058
            },
11059
        }
11060
0
    }
11061
0
    extern "system" fn destroy_fence(
11062
0
        device: vk::Device,
11063
0
        fence: vk::Fence,
11064
0
        p_allocator: *const vk::AllocationCallbacks,
11065
0
    ) {
11066
0
        let global = Self::instance();
11067
0
        // vkDestroyFence
11068
0
        let device_info = global.get_device_info(device).unwrap();
11069
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11070
0
        let layer_result = device_info
11071
0
            .customized_info
11072
0
            .borrow()
11073
0
            .hooks()
11074
0
            .destroy_fence(fence, unsafe { p_allocator.as_ref() });
11075
0
        match layer_result {
11076
0
            LayerResult::Handled(res) => res,
11077
            LayerResult::Unhandled => unsafe {
11078
0
                (dispatch_table.destroy_fence)(device, fence, p_allocator)
11079
            },
11080
        }
11081
0
    }
11082
0
    extern "system" fn reset_fences(
11083
0
        device: vk::Device,
11084
0
        fence_count: u32,
11085
0
        p_fences: *const vk::Fence,
11086
0
    ) -> vk::Result {
11087
0
        let global = Self::instance();
11088
0
        // vkResetFences
11089
0
        let device_info = global.get_device_info(device).unwrap();
11090
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11091
0
        let layer_result = device_info
11092
0
            .customized_info
11093
0
            .borrow()
11094
0
            .hooks()
11095
0
            .reset_fences(unsafe { slice_from_raw_parts(p_fences, fence_count) });
11096
0
        match layer_result {
11097
0
            LayerResult::Handled(res) => match res {
11098
0
                Ok(()) => vk::Result::SUCCESS,
11099
0
                Err(e) => e,
11100
            },
11101
            LayerResult::Unhandled => unsafe {
11102
0
                (dispatch_table.reset_fences)(device, fence_count, p_fences)
11103
            },
11104
        }
11105
0
    }
11106
0
    extern "system" fn get_fence_status(device: vk::Device, fence: vk::Fence) -> vk::Result {
11107
0
        let global = Self::instance();
11108
0
        // vkGetFenceStatus
11109
0
        let device_info = global.get_device_info(device).unwrap();
11110
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11111
0
        let layer_result = device_info
11112
0
            .customized_info
11113
0
            .borrow()
11114
0
            .hooks()
11115
0
            .get_fence_status(fence);
11116
0
        match layer_result {
11117
0
            LayerResult::Handled(res) => match res {
11118
0
                Ok(()) => vk::Result::SUCCESS,
11119
0
                Err(e) => e,
11120
            },
11121
0
            LayerResult::Unhandled => unsafe { (dispatch_table.get_fence_status)(device, fence) },
11122
        }
11123
0
    }
11124
0
    extern "system" fn wait_for_fences(
11125
0
        device: vk::Device,
11126
0
        fence_count: u32,
11127
0
        p_fences: *const vk::Fence,
11128
0
        wait_all: vk::Bool32,
11129
0
        timeout: u64,
11130
0
    ) -> vk::Result {
11131
0
        let global = Self::instance();
11132
0
        // vkWaitForFences
11133
0
        let device_info = global.get_device_info(device).unwrap();
11134
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11135
0
        let layer_result = device_info
11136
0
            .customized_info
11137
0
            .borrow()
11138
0
            .hooks()
11139
0
            .wait_for_fences(
11140
0
                unsafe { slice_from_raw_parts(p_fences, fence_count) },
11141
0
                wait_all == vk::TRUE,
11142
0
                timeout,
11143
0
            );
11144
0
        match layer_result {
11145
0
            LayerResult::Handled(res) => match res {
11146
0
                Ok(()) => vk::Result::SUCCESS,
11147
0
                Err(e) => e,
11148
            },
11149
            LayerResult::Unhandled => unsafe {
11150
0
                (dispatch_table.wait_for_fences)(device, fence_count, p_fences, wait_all, timeout)
11151
            },
11152
        }
11153
0
    }
11154
0
    extern "system" fn create_semaphore(
11155
0
        device: vk::Device,
11156
0
        p_create_info: *const vk::SemaphoreCreateInfo,
11157
0
        p_allocator: *const vk::AllocationCallbacks,
11158
0
        p_semaphore: *mut vk::Semaphore,
11159
0
    ) -> vk::Result {
11160
0
        let global = Self::instance();
11161
0
        // vkCreateSemaphore
11162
0
        let device_info = global.get_device_info(device).unwrap();
11163
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11164
0
        let layer_result = device_info
11165
0
            .customized_info
11166
0
            .borrow()
11167
0
            .hooks()
11168
0
            .create_semaphore(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11169
0
                p_allocator.as_ref()
11170
0
            });
11171
0
        match layer_result {
11172
0
            LayerResult::Handled(res) => match res {
11173
0
                Ok(res) => {
11174
0
                    *unsafe { p_semaphore.as_mut() }.unwrap() = res;
11175
0
                    vk::Result::SUCCESS
11176
                }
11177
0
                Err(e) => e,
11178
            },
11179
            LayerResult::Unhandled => unsafe {
11180
0
                (dispatch_table.create_semaphore)(device, p_create_info, p_allocator, p_semaphore)
11181
            },
11182
        }
11183
0
    }
11184
0
    extern "system" fn destroy_semaphore(
11185
0
        device: vk::Device,
11186
0
        semaphore: vk::Semaphore,
11187
0
        p_allocator: *const vk::AllocationCallbacks,
11188
0
    ) {
11189
0
        let global = Self::instance();
11190
0
        // vkDestroySemaphore
11191
0
        let device_info = global.get_device_info(device).unwrap();
11192
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11193
0
        let layer_result = device_info
11194
0
            .customized_info
11195
0
            .borrow()
11196
0
            .hooks()
11197
0
            .destroy_semaphore(semaphore, unsafe { p_allocator.as_ref() });
11198
0
        match layer_result {
11199
0
            LayerResult::Handled(res) => res,
11200
            LayerResult::Unhandled => unsafe {
11201
0
                (dispatch_table.destroy_semaphore)(device, semaphore, p_allocator)
11202
            },
11203
        }
11204
0
    }
11205
0
    extern "system" fn create_event(
11206
0
        device: vk::Device,
11207
0
        p_create_info: *const vk::EventCreateInfo,
11208
0
        p_allocator: *const vk::AllocationCallbacks,
11209
0
        p_event: *mut vk::Event,
11210
0
    ) -> vk::Result {
11211
0
        let global = Self::instance();
11212
0
        // vkCreateEvent
11213
0
        let device_info = global.get_device_info(device).unwrap();
11214
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11215
0
        let layer_result = device_info
11216
0
            .customized_info
11217
0
            .borrow()
11218
0
            .hooks()
11219
0
            .create_event(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11220
0
                p_allocator.as_ref()
11221
0
            });
11222
0
        match layer_result {
11223
0
            LayerResult::Handled(res) => match res {
11224
0
                Ok(res) => {
11225
0
                    *unsafe { p_event.as_mut() }.unwrap() = res;
11226
0
                    vk::Result::SUCCESS
11227
                }
11228
0
                Err(e) => e,
11229
            },
11230
            LayerResult::Unhandled => unsafe {
11231
0
                (dispatch_table.create_event)(device, p_create_info, p_allocator, p_event)
11232
            },
11233
        }
11234
0
    }
11235
0
    extern "system" fn destroy_event(
11236
0
        device: vk::Device,
11237
0
        event: vk::Event,
11238
0
        p_allocator: *const vk::AllocationCallbacks,
11239
0
    ) {
11240
0
        let global = Self::instance();
11241
0
        // vkDestroyEvent
11242
0
        let device_info = global.get_device_info(device).unwrap();
11243
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11244
0
        let layer_result = device_info
11245
0
            .customized_info
11246
0
            .borrow()
11247
0
            .hooks()
11248
0
            .destroy_event(event, unsafe { p_allocator.as_ref() });
11249
0
        match layer_result {
11250
0
            LayerResult::Handled(res) => res,
11251
            LayerResult::Unhandled => unsafe {
11252
0
                (dispatch_table.destroy_event)(device, event, p_allocator)
11253
            },
11254
        }
11255
0
    }
11256
0
    extern "system" fn get_event_status(device: vk::Device, event: vk::Event) -> vk::Result {
11257
0
        let global = Self::instance();
11258
0
        // vkGetEventStatus
11259
0
        let device_info = global.get_device_info(device).unwrap();
11260
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11261
0
        let layer_result = device_info
11262
0
            .customized_info
11263
0
            .borrow()
11264
0
            .hooks()
11265
0
            .get_event_status(event);
11266
0
        match layer_result {
11267
0
            LayerResult::Handled(res) => match res {
11268
0
                Ok(()) => vk::Result::SUCCESS,
11269
0
                Err(e) => e,
11270
            },
11271
0
            LayerResult::Unhandled => unsafe { (dispatch_table.get_event_status)(device, event) },
11272
        }
11273
0
    }
11274
0
    extern "system" fn set_event(device: vk::Device, event: vk::Event) -> vk::Result {
11275
0
        let global = Self::instance();
11276
0
        // vkSetEvent
11277
0
        let device_info = global.get_device_info(device).unwrap();
11278
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11279
0
        let layer_result = device_info
11280
0
            .customized_info
11281
0
            .borrow()
11282
0
            .hooks()
11283
0
            .set_event(event);
11284
0
        match layer_result {
11285
0
            LayerResult::Handled(res) => match res {
11286
0
                Ok(()) => vk::Result::SUCCESS,
11287
0
                Err(e) => e,
11288
            },
11289
0
            LayerResult::Unhandled => unsafe { (dispatch_table.set_event)(device, event) },
11290
        }
11291
0
    }
11292
0
    extern "system" fn reset_event(device: vk::Device, event: vk::Event) -> vk::Result {
11293
0
        let global = Self::instance();
11294
0
        // vkResetEvent
11295
0
        let device_info = global.get_device_info(device).unwrap();
11296
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11297
0
        let layer_result = device_info
11298
0
            .customized_info
11299
0
            .borrow()
11300
0
            .hooks()
11301
0
            .reset_event(event);
11302
0
        match layer_result {
11303
0
            LayerResult::Handled(res) => match res {
11304
0
                Ok(()) => vk::Result::SUCCESS,
11305
0
                Err(e) => e,
11306
            },
11307
0
            LayerResult::Unhandled => unsafe { (dispatch_table.reset_event)(device, event) },
11308
        }
11309
0
    }
11310
0
    extern "system" fn create_query_pool(
11311
0
        device: vk::Device,
11312
0
        p_create_info: *const vk::QueryPoolCreateInfo,
11313
0
        p_allocator: *const vk::AllocationCallbacks,
11314
0
        p_query_pool: *mut vk::QueryPool,
11315
0
    ) -> vk::Result {
11316
0
        let global = Self::instance();
11317
0
        // vkCreateQueryPool
11318
0
        let device_info = global.get_device_info(device).unwrap();
11319
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11320
0
        let layer_result = device_info
11321
0
            .customized_info
11322
0
            .borrow()
11323
0
            .hooks()
11324
0
            .create_query_pool(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11325
0
                p_allocator.as_ref()
11326
0
            });
11327
0
        match layer_result {
11328
0
            LayerResult::Handled(res) => match res {
11329
0
                Ok(res) => {
11330
0
                    *unsafe { p_query_pool.as_mut() }.unwrap() = res;
11331
0
                    vk::Result::SUCCESS
11332
                }
11333
0
                Err(e) => e,
11334
            },
11335
            LayerResult::Unhandled => unsafe {
11336
0
                (dispatch_table.create_query_pool)(device, p_create_info, p_allocator, p_query_pool)
11337
            },
11338
        }
11339
0
    }
11340
0
    extern "system" fn destroy_query_pool(
11341
0
        device: vk::Device,
11342
0
        query_pool: vk::QueryPool,
11343
0
        p_allocator: *const vk::AllocationCallbacks,
11344
0
    ) {
11345
0
        let global = Self::instance();
11346
0
        // vkDestroyQueryPool
11347
0
        let device_info = global.get_device_info(device).unwrap();
11348
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11349
0
        let layer_result = device_info
11350
0
            .customized_info
11351
0
            .borrow()
11352
0
            .hooks()
11353
0
            .destroy_query_pool(query_pool, unsafe { p_allocator.as_ref() });
11354
0
        match layer_result {
11355
0
            LayerResult::Handled(res) => res,
11356
            LayerResult::Unhandled => unsafe {
11357
0
                (dispatch_table.destroy_query_pool)(device, query_pool, p_allocator)
11358
            },
11359
        }
11360
0
    }
11361
0
    extern "system" fn get_query_pool_results(
11362
0
        device: vk::Device,
11363
0
        query_pool: vk::QueryPool,
11364
0
        first_query: u32,
11365
0
        query_count: u32,
11366
0
        data_size: usize,
11367
0
        p_data: *mut c_void,
11368
0
        stride: vk::DeviceSize,
11369
0
        flags: vk::QueryResultFlags,
11370
0
    ) -> vk::Result {
11371
0
        let global = Self::instance();
11372
0
        // vkGetQueryPoolResults
11373
0
        let device_info = global.get_device_info(device).unwrap();
11374
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11375
0
        let layer_result = device_info
11376
0
            .customized_info
11377
0
            .borrow()
11378
0
            .hooks()
11379
0
            .get_query_pool_results(
11380
0
                query_pool,
11381
0
                first_query,
11382
0
                query_count,
11383
0
                unsafe { uninit_slice_from_raw_parts_mut(p_data as *mut u8, data_size) },
11384
0
                stride,
11385
0
                flags,
11386
0
            );
11387
0
        match layer_result {
11388
0
            LayerResult::Handled(res) => match res {
11389
0
                Ok(()) => vk::Result::SUCCESS,
11390
0
                Err(e) => e,
11391
            },
11392
            LayerResult::Unhandled => unsafe {
11393
0
                (dispatch_table.get_query_pool_results)(
11394
0
                    device,
11395
0
                    query_pool,
11396
0
                    first_query,
11397
0
                    query_count,
11398
0
                    data_size,
11399
0
                    p_data,
11400
0
                    stride,
11401
0
                    flags,
11402
0
                )
11403
            },
11404
        }
11405
0
    }
11406
0
    extern "system" fn create_buffer(
11407
0
        device: vk::Device,
11408
0
        p_create_info: *const vk::BufferCreateInfo,
11409
0
        p_allocator: *const vk::AllocationCallbacks,
11410
0
        p_buffer: *mut vk::Buffer,
11411
0
    ) -> vk::Result {
11412
0
        let global = Self::instance();
11413
0
        // vkCreateBuffer
11414
0
        let device_info = global.get_device_info(device).unwrap();
11415
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11416
0
        let layer_result = device_info
11417
0
            .customized_info
11418
0
            .borrow()
11419
0
            .hooks()
11420
0
            .create_buffer(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11421
0
                p_allocator.as_ref()
11422
0
            });
11423
0
        match layer_result {
11424
0
            LayerResult::Handled(res) => match res {
11425
0
                Ok(res) => {
11426
0
                    *unsafe { p_buffer.as_mut() }.unwrap() = res;
11427
0
                    vk::Result::SUCCESS
11428
                }
11429
0
                Err(e) => e,
11430
            },
11431
            LayerResult::Unhandled => unsafe {
11432
0
                (dispatch_table.create_buffer)(device, p_create_info, p_allocator, p_buffer)
11433
            },
11434
        }
11435
0
    }
11436
0
    extern "system" fn destroy_buffer(
11437
0
        device: vk::Device,
11438
0
        buffer: vk::Buffer,
11439
0
        p_allocator: *const vk::AllocationCallbacks,
11440
0
    ) {
11441
0
        let global = Self::instance();
11442
0
        // vkDestroyBuffer
11443
0
        let device_info = global.get_device_info(device).unwrap();
11444
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11445
0
        let layer_result = device_info
11446
0
            .customized_info
11447
0
            .borrow()
11448
0
            .hooks()
11449
0
            .destroy_buffer(buffer, unsafe { p_allocator.as_ref() });
11450
0
        match layer_result {
11451
0
            LayerResult::Handled(res) => res,
11452
            LayerResult::Unhandled => unsafe {
11453
0
                (dispatch_table.destroy_buffer)(device, buffer, p_allocator)
11454
            },
11455
        }
11456
0
    }
11457
0
    extern "system" fn create_buffer_view(
11458
0
        device: vk::Device,
11459
0
        p_create_info: *const vk::BufferViewCreateInfo,
11460
0
        p_allocator: *const vk::AllocationCallbacks,
11461
0
        p_view: *mut vk::BufferView,
11462
0
    ) -> vk::Result {
11463
0
        let global = Self::instance();
11464
0
        // vkCreateBufferView
11465
0
        let device_info = global.get_device_info(device).unwrap();
11466
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11467
0
        let layer_result = device_info
11468
0
            .customized_info
11469
0
            .borrow()
11470
0
            .hooks()
11471
0
            .create_buffer_view(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11472
0
                p_allocator.as_ref()
11473
0
            });
11474
0
        match layer_result {
11475
0
            LayerResult::Handled(res) => match res {
11476
0
                Ok(res) => {
11477
0
                    *unsafe { p_view.as_mut() }.unwrap() = res;
11478
0
                    vk::Result::SUCCESS
11479
                }
11480
0
                Err(e) => e,
11481
            },
11482
            LayerResult::Unhandled => unsafe {
11483
0
                (dispatch_table.create_buffer_view)(device, p_create_info, p_allocator, p_view)
11484
            },
11485
        }
11486
0
    }
11487
0
    extern "system" fn destroy_buffer_view(
11488
0
        device: vk::Device,
11489
0
        buffer_view: vk::BufferView,
11490
0
        p_allocator: *const vk::AllocationCallbacks,
11491
0
    ) {
11492
0
        let global = Self::instance();
11493
0
        // vkDestroyBufferView
11494
0
        let device_info = global.get_device_info(device).unwrap();
11495
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11496
0
        let layer_result = device_info
11497
0
            .customized_info
11498
0
            .borrow()
11499
0
            .hooks()
11500
0
            .destroy_buffer_view(buffer_view, unsafe { p_allocator.as_ref() });
11501
0
        match layer_result {
11502
0
            LayerResult::Handled(res) => res,
11503
            LayerResult::Unhandled => unsafe {
11504
0
                (dispatch_table.destroy_buffer_view)(device, buffer_view, p_allocator)
11505
            },
11506
        }
11507
0
    }
11508
0
    extern "system" fn create_image(
11509
0
        device: vk::Device,
11510
0
        p_create_info: *const vk::ImageCreateInfo,
11511
0
        p_allocator: *const vk::AllocationCallbacks,
11512
0
        p_image: *mut vk::Image,
11513
0
    ) -> vk::Result {
11514
0
        let global = Self::instance();
11515
0
        // vkCreateImage
11516
0
        let device_info = global.get_device_info(device).unwrap();
11517
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11518
0
        let layer_result = device_info
11519
0
            .customized_info
11520
0
            .borrow()
11521
0
            .hooks()
11522
0
            .create_image(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11523
0
                p_allocator.as_ref()
11524
0
            });
11525
0
        match layer_result {
11526
0
            LayerResult::Handled(res) => match res {
11527
0
                Ok(res) => {
11528
0
                    *unsafe { p_image.as_mut() }.unwrap() = res;
11529
0
                    vk::Result::SUCCESS
11530
                }
11531
0
                Err(e) => e,
11532
            },
11533
            LayerResult::Unhandled => unsafe {
11534
0
                (dispatch_table.create_image)(device, p_create_info, p_allocator, p_image)
11535
            },
11536
        }
11537
0
    }
11538
1
    extern "system" fn destroy_image(
11539
1
        device: vk::Device,
11540
1
        image: vk::Image,
11541
1
        p_allocator: *const vk::AllocationCallbacks,
11542
1
    ) {
11543
1
        let global = Self::instance();
11544
1
        // vkDestroyImage
11545
1
        let device_info = global.get_device_info(device).unwrap();
11546
1
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11547
1
        let layer_result = device_info
11548
1
            .customized_info
11549
1
            .borrow()
11550
1
            .hooks()
11551
1
            .destroy_image(image, unsafe { p_allocator.as_ref() });
11552
1
        match layer_result {
11553
0
            LayerResult::Handled(res) => res,
11554
            LayerResult::Unhandled => unsafe {
11555
1
                (dispatch_table.destroy_image)(device, image, p_allocator)
11556
            },
11557
        }
11558
1
    }
11559
0
    extern "system" fn get_image_subresource_layout(
11560
0
        device: vk::Device,
11561
0
        image: vk::Image,
11562
0
        p_subresource: *const vk::ImageSubresource,
11563
0
        p_layout: *mut vk::SubresourceLayout,
11564
0
    ) {
11565
0
        let global = Self::instance();
11566
0
        // vkGetImageSubresourceLayout
11567
0
        let device_info = global.get_device_info(device).unwrap();
11568
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11569
0
        let layer_result = device_info
11570
0
            .customized_info
11571
0
            .borrow()
11572
0
            .hooks()
11573
0
            .get_image_subresource_layout(
11574
0
                image,
11575
0
                unsafe { p_subresource.as_ref() }.unwrap(),
11576
0
                unsafe { ptr_as_uninit_mut(p_layout) }.unwrap(),
11577
0
            );
11578
0
        match layer_result {
11579
0
            LayerResult::Handled(res) => res,
11580
            LayerResult::Unhandled => unsafe {
11581
0
                (dispatch_table.get_image_subresource_layout)(
11582
0
                    device,
11583
0
                    image,
11584
0
                    p_subresource,
11585
0
                    p_layout,
11586
0
                )
11587
            },
11588
        }
11589
0
    }
11590
0
    extern "system" fn create_image_view(
11591
0
        device: vk::Device,
11592
0
        p_create_info: *const vk::ImageViewCreateInfo,
11593
0
        p_allocator: *const vk::AllocationCallbacks,
11594
0
        p_view: *mut vk::ImageView,
11595
0
    ) -> vk::Result {
11596
0
        let global = Self::instance();
11597
0
        // vkCreateImageView
11598
0
        let device_info = global.get_device_info(device).unwrap();
11599
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11600
0
        let layer_result = device_info
11601
0
            .customized_info
11602
0
            .borrow()
11603
0
            .hooks()
11604
0
            .create_image_view(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11605
0
                p_allocator.as_ref()
11606
0
            });
11607
0
        match layer_result {
11608
0
            LayerResult::Handled(res) => match res {
11609
0
                Ok(res) => {
11610
0
                    *unsafe { p_view.as_mut() }.unwrap() = res;
11611
0
                    vk::Result::SUCCESS
11612
                }
11613
0
                Err(e) => e,
11614
            },
11615
            LayerResult::Unhandled => unsafe {
11616
0
                (dispatch_table.create_image_view)(device, p_create_info, p_allocator, p_view)
11617
            },
11618
        }
11619
0
    }
11620
0
    extern "system" fn destroy_image_view(
11621
0
        device: vk::Device,
11622
0
        image_view: vk::ImageView,
11623
0
        p_allocator: *const vk::AllocationCallbacks,
11624
0
    ) {
11625
0
        let global = Self::instance();
11626
0
        // vkDestroyImageView
11627
0
        let device_info = global.get_device_info(device).unwrap();
11628
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11629
0
        let layer_result = device_info
11630
0
            .customized_info
11631
0
            .borrow()
11632
0
            .hooks()
11633
0
            .destroy_image_view(image_view, unsafe { p_allocator.as_ref() });
11634
0
        match layer_result {
11635
0
            LayerResult::Handled(res) => res,
11636
            LayerResult::Unhandled => unsafe {
11637
0
                (dispatch_table.destroy_image_view)(device, image_view, p_allocator)
11638
            },
11639
        }
11640
0
    }
11641
0
    extern "system" fn create_shader_module(
11642
0
        device: vk::Device,
11643
0
        p_create_info: *const vk::ShaderModuleCreateInfo,
11644
0
        p_allocator: *const vk::AllocationCallbacks,
11645
0
        p_shader_module: *mut vk::ShaderModule,
11646
0
    ) -> vk::Result {
11647
0
        let global = Self::instance();
11648
0
        // vkCreateShaderModule
11649
0
        let device_info = global.get_device_info(device).unwrap();
11650
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11651
0
        let layer_result = device_info
11652
0
            .customized_info
11653
0
            .borrow()
11654
0
            .hooks()
11655
0
            .create_shader_module(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11656
0
                p_allocator.as_ref()
11657
0
            });
11658
0
        match layer_result {
11659
0
            LayerResult::Handled(res) => match res {
11660
0
                Ok(res) => {
11661
0
                    *unsafe { p_shader_module.as_mut() }.unwrap() = res;
11662
0
                    vk::Result::SUCCESS
11663
                }
11664
0
                Err(e) => e,
11665
            },
11666
            LayerResult::Unhandled => unsafe {
11667
0
                (dispatch_table.create_shader_module)(
11668
0
                    device,
11669
0
                    p_create_info,
11670
0
                    p_allocator,
11671
0
                    p_shader_module,
11672
0
                )
11673
            },
11674
        }
11675
0
    }
11676
0
    extern "system" fn destroy_shader_module(
11677
0
        device: vk::Device,
11678
0
        shader_module: vk::ShaderModule,
11679
0
        p_allocator: *const vk::AllocationCallbacks,
11680
0
    ) {
11681
0
        let global = Self::instance();
11682
0
        // vkDestroyShaderModule
11683
0
        let device_info = global.get_device_info(device).unwrap();
11684
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11685
0
        let layer_result = device_info
11686
0
            .customized_info
11687
0
            .borrow()
11688
0
            .hooks()
11689
0
            .destroy_shader_module(shader_module, unsafe { p_allocator.as_ref() });
11690
0
        match layer_result {
11691
0
            LayerResult::Handled(res) => res,
11692
            LayerResult::Unhandled => unsafe {
11693
0
                (dispatch_table.destroy_shader_module)(device, shader_module, p_allocator)
11694
            },
11695
        }
11696
0
    }
11697
0
    extern "system" fn create_pipeline_cache(
11698
0
        device: vk::Device,
11699
0
        p_create_info: *const vk::PipelineCacheCreateInfo,
11700
0
        p_allocator: *const vk::AllocationCallbacks,
11701
0
        p_pipeline_cache: *mut vk::PipelineCache,
11702
0
    ) -> vk::Result {
11703
0
        let global = Self::instance();
11704
0
        // vkCreatePipelineCache
11705
0
        let device_info = global.get_device_info(device).unwrap();
11706
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11707
0
        let layer_result = device_info
11708
0
            .customized_info
11709
0
            .borrow()
11710
0
            .hooks()
11711
0
            .create_pipeline_cache(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11712
0
                p_allocator.as_ref()
11713
0
            });
11714
0
        match layer_result {
11715
0
            LayerResult::Handled(res) => match res {
11716
0
                Ok(res) => {
11717
0
                    *unsafe { p_pipeline_cache.as_mut() }.unwrap() = res;
11718
0
                    vk::Result::SUCCESS
11719
                }
11720
0
                Err(e) => e,
11721
            },
11722
            LayerResult::Unhandled => unsafe {
11723
0
                (dispatch_table.create_pipeline_cache)(
11724
0
                    device,
11725
0
                    p_create_info,
11726
0
                    p_allocator,
11727
0
                    p_pipeline_cache,
11728
0
                )
11729
            },
11730
        }
11731
0
    }
11732
0
    extern "system" fn destroy_pipeline_cache(
11733
0
        device: vk::Device,
11734
0
        pipeline_cache: vk::PipelineCache,
11735
0
        p_allocator: *const vk::AllocationCallbacks,
11736
0
    ) {
11737
0
        let global = Self::instance();
11738
0
        // vkDestroyPipelineCache
11739
0
        let device_info = global.get_device_info(device).unwrap();
11740
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11741
0
        let layer_result = device_info
11742
0
            .customized_info
11743
0
            .borrow()
11744
0
            .hooks()
11745
0
            .destroy_pipeline_cache(pipeline_cache, unsafe { p_allocator.as_ref() });
11746
0
        match layer_result {
11747
0
            LayerResult::Handled(res) => res,
11748
            LayerResult::Unhandled => unsafe {
11749
0
                (dispatch_table.destroy_pipeline_cache)(device, pipeline_cache, p_allocator)
11750
            },
11751
        }
11752
0
    }
11753
0
    extern "system" fn get_pipeline_cache_data(
11754
0
        device: vk::Device,
11755
0
        pipeline_cache: vk::PipelineCache,
11756
0
        p_data_size: *mut usize,
11757
0
        p_data: *mut c_void,
11758
0
    ) -> vk::Result {
11759
0
        let global = Self::instance();
11760
0
        // vkGetPipelineCacheData
11761
0
        let device_info = global.get_device_info(device).unwrap();
11762
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11763
0
        let layer_result = device_info
11764
0
            .customized_info
11765
0
            .borrow()
11766
0
            .hooks()
11767
0
            .get_pipeline_cache_data(
11768
0
                pipeline_cache,
11769
0
                unsafe { ptr_as_uninit_mut(p_data_size) }.unwrap(),
11770
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_data as *mut u8, p_data_size) },
11771
0
            );
11772
0
        match layer_result {
11773
0
            LayerResult::Handled(res) => match res {
11774
0
                Ok(()) => vk::Result::SUCCESS,
11775
0
                Err(e) => e,
11776
            },
11777
            LayerResult::Unhandled => unsafe {
11778
0
                (dispatch_table.get_pipeline_cache_data)(
11779
0
                    device,
11780
0
                    pipeline_cache,
11781
0
                    p_data_size,
11782
0
                    p_data,
11783
0
                )
11784
            },
11785
        }
11786
0
    }
11787
0
    extern "system" fn merge_pipeline_caches(
11788
0
        device: vk::Device,
11789
0
        dst_cache: vk::PipelineCache,
11790
0
        src_cache_count: u32,
11791
0
        p_src_caches: *const vk::PipelineCache,
11792
0
    ) -> vk::Result {
11793
0
        let global = Self::instance();
11794
0
        // vkMergePipelineCaches
11795
0
        let device_info = global.get_device_info(device).unwrap();
11796
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11797
0
        let layer_result = device_info
11798
0
            .customized_info
11799
0
            .borrow()
11800
0
            .hooks()
11801
0
            .merge_pipeline_caches(dst_cache, unsafe {
11802
0
                slice_from_raw_parts(p_src_caches, src_cache_count)
11803
0
            });
11804
0
        match layer_result {
11805
0
            LayerResult::Handled(res) => match res {
11806
0
                Ok(()) => vk::Result::SUCCESS,
11807
0
                Err(e) => e,
11808
            },
11809
            LayerResult::Unhandled => unsafe {
11810
0
                (dispatch_table.merge_pipeline_caches)(
11811
0
                    device,
11812
0
                    dst_cache,
11813
0
                    src_cache_count,
11814
0
                    p_src_caches,
11815
0
                )
11816
            },
11817
        }
11818
0
    }
11819
0
    extern "system" fn create_graphics_pipelines(
11820
0
        device: vk::Device,
11821
0
        pipeline_cache: vk::PipelineCache,
11822
0
        create_info_count: u32,
11823
0
        p_create_infos: *const vk::GraphicsPipelineCreateInfo,
11824
0
        p_allocator: *const vk::AllocationCallbacks,
11825
0
        p_pipelines: *mut vk::Pipeline,
11826
0
    ) -> vk::Result {
11827
0
        let global = Self::instance();
11828
0
        // vkCreateGraphicsPipelines
11829
0
        let device_info = global.get_device_info(device).unwrap();
11830
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11831
0
        let layer_result = device_info
11832
0
            .customized_info
11833
0
            .borrow()
11834
0
            .hooks()
11835
0
            .create_graphics_pipelines(
11836
0
                pipeline_cache,
11837
0
                unsafe { slice_from_raw_parts(p_create_infos, create_info_count) },
11838
0
                unsafe { p_allocator.as_ref() },
11839
0
            );
11840
0
        match layer_result {
11841
0
            LayerResult::Handled(res) => match res {
11842
0
                Ok(res) => {
11843
0
                    unsafe {
11844
0
                        std::slice::from_raw_parts_mut(
11845
0
                            p_pipelines,
11846
0
                            create_info_count.try_into().unwrap(),
11847
0
                        )
11848
0
                    }
11849
0
                    .copy_from_slice(&res);
11850
0
                    vk::Result::SUCCESS
11851
                }
11852
0
                Err(e) => e,
11853
            },
11854
            LayerResult::Unhandled => unsafe {
11855
0
                (dispatch_table.create_graphics_pipelines)(
11856
0
                    device,
11857
0
                    pipeline_cache,
11858
0
                    create_info_count,
11859
0
                    p_create_infos,
11860
0
                    p_allocator,
11861
0
                    p_pipelines,
11862
0
                )
11863
            },
11864
        }
11865
0
    }
11866
0
    extern "system" fn create_compute_pipelines(
11867
0
        device: vk::Device,
11868
0
        pipeline_cache: vk::PipelineCache,
11869
0
        create_info_count: u32,
11870
0
        p_create_infos: *const vk::ComputePipelineCreateInfo,
11871
0
        p_allocator: *const vk::AllocationCallbacks,
11872
0
        p_pipelines: *mut vk::Pipeline,
11873
0
    ) -> vk::Result {
11874
0
        let global = Self::instance();
11875
0
        // vkCreateComputePipelines
11876
0
        let device_info = global.get_device_info(device).unwrap();
11877
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11878
0
        let layer_result = device_info
11879
0
            .customized_info
11880
0
            .borrow()
11881
0
            .hooks()
11882
0
            .create_compute_pipelines(
11883
0
                pipeline_cache,
11884
0
                unsafe { slice_from_raw_parts(p_create_infos, create_info_count) },
11885
0
                unsafe { p_allocator.as_ref() },
11886
0
            );
11887
0
        match layer_result {
11888
0
            LayerResult::Handled(res) => match res {
11889
0
                Ok(res) => {
11890
0
                    unsafe {
11891
0
                        std::slice::from_raw_parts_mut(
11892
0
                            p_pipelines,
11893
0
                            create_info_count.try_into().unwrap(),
11894
0
                        )
11895
0
                    }
11896
0
                    .copy_from_slice(&res);
11897
0
                    vk::Result::SUCCESS
11898
                }
11899
0
                Err(e) => e,
11900
            },
11901
            LayerResult::Unhandled => unsafe {
11902
0
                (dispatch_table.create_compute_pipelines)(
11903
0
                    device,
11904
0
                    pipeline_cache,
11905
0
                    create_info_count,
11906
0
                    p_create_infos,
11907
0
                    p_allocator,
11908
0
                    p_pipelines,
11909
0
                )
11910
            },
11911
        }
11912
0
    }
11913
0
    extern "system" fn destroy_pipeline(
11914
0
        device: vk::Device,
11915
0
        pipeline: vk::Pipeline,
11916
0
        p_allocator: *const vk::AllocationCallbacks,
11917
0
    ) {
11918
0
        let global = Self::instance();
11919
0
        // vkDestroyPipeline
11920
0
        let device_info = global.get_device_info(device).unwrap();
11921
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11922
0
        let layer_result = device_info
11923
0
            .customized_info
11924
0
            .borrow()
11925
0
            .hooks()
11926
0
            .destroy_pipeline(pipeline, unsafe { p_allocator.as_ref() });
11927
0
        match layer_result {
11928
0
            LayerResult::Handled(res) => res,
11929
            LayerResult::Unhandled => unsafe {
11930
0
                (dispatch_table.destroy_pipeline)(device, pipeline, p_allocator)
11931
            },
11932
        }
11933
0
    }
11934
0
    extern "system" fn create_pipeline_layout(
11935
0
        device: vk::Device,
11936
0
        p_create_info: *const vk::PipelineLayoutCreateInfo,
11937
0
        p_allocator: *const vk::AllocationCallbacks,
11938
0
        p_pipeline_layout: *mut vk::PipelineLayout,
11939
0
    ) -> vk::Result {
11940
0
        let global = Self::instance();
11941
0
        // vkCreatePipelineLayout
11942
0
        let device_info = global.get_device_info(device).unwrap();
11943
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11944
0
        let layer_result = device_info
11945
0
            .customized_info
11946
0
            .borrow()
11947
0
            .hooks()
11948
0
            .create_pipeline_layout(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11949
0
                p_allocator.as_ref()
11950
0
            });
11951
0
        match layer_result {
11952
0
            LayerResult::Handled(res) => match res {
11953
0
                Ok(res) => {
11954
0
                    *unsafe { p_pipeline_layout.as_mut() }.unwrap() = res;
11955
0
                    vk::Result::SUCCESS
11956
                }
11957
0
                Err(e) => e,
11958
            },
11959
            LayerResult::Unhandled => unsafe {
11960
0
                (dispatch_table.create_pipeline_layout)(
11961
0
                    device,
11962
0
                    p_create_info,
11963
0
                    p_allocator,
11964
0
                    p_pipeline_layout,
11965
0
                )
11966
            },
11967
        }
11968
0
    }
11969
0
    extern "system" fn destroy_pipeline_layout(
11970
0
        device: vk::Device,
11971
0
        pipeline_layout: vk::PipelineLayout,
11972
0
        p_allocator: *const vk::AllocationCallbacks,
11973
0
    ) {
11974
0
        let global = Self::instance();
11975
0
        // vkDestroyPipelineLayout
11976
0
        let device_info = global.get_device_info(device).unwrap();
11977
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11978
0
        let layer_result = device_info
11979
0
            .customized_info
11980
0
            .borrow()
11981
0
            .hooks()
11982
0
            .destroy_pipeline_layout(pipeline_layout, unsafe { p_allocator.as_ref() });
11983
0
        match layer_result {
11984
0
            LayerResult::Handled(res) => res,
11985
            LayerResult::Unhandled => unsafe {
11986
0
                (dispatch_table.destroy_pipeline_layout)(device, pipeline_layout, p_allocator)
11987
            },
11988
        }
11989
0
    }
11990
0
    extern "system" fn create_sampler(
11991
0
        device: vk::Device,
11992
0
        p_create_info: *const vk::SamplerCreateInfo,
11993
0
        p_allocator: *const vk::AllocationCallbacks,
11994
0
        p_sampler: *mut vk::Sampler,
11995
0
    ) -> vk::Result {
11996
0
        let global = Self::instance();
11997
0
        // vkCreateSampler
11998
0
        let device_info = global.get_device_info(device).unwrap();
11999
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12000
0
        let layer_result = device_info
12001
0
            .customized_info
12002
0
            .borrow()
12003
0
            .hooks()
12004
0
            .create_sampler(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
12005
0
                p_allocator.as_ref()
12006
0
            });
12007
0
        match layer_result {
12008
0
            LayerResult::Handled(res) => match res {
12009
0
                Ok(res) => {
12010
0
                    *unsafe { p_sampler.as_mut() }.unwrap() = res;
12011
0
                    vk::Result::SUCCESS
12012
                }
12013
0
                Err(e) => e,
12014
            },
12015
            LayerResult::Unhandled => unsafe {
12016
0
                (dispatch_table.create_sampler)(device, p_create_info, p_allocator, p_sampler)
12017
            },
12018
        }
12019
0
    }
12020
0
    extern "system" fn destroy_sampler(
12021
0
        device: vk::Device,
12022
0
        sampler: vk::Sampler,
12023
0
        p_allocator: *const vk::AllocationCallbacks,
12024
0
    ) {
12025
0
        let global = Self::instance();
12026
0
        // vkDestroySampler
12027
0
        let device_info = global.get_device_info(device).unwrap();
12028
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12029
0
        let layer_result = device_info
12030
0
            .customized_info
12031
0
            .borrow()
12032
0
            .hooks()
12033
0
            .destroy_sampler(sampler, unsafe { p_allocator.as_ref() });
12034
0
        match layer_result {
12035
0
            LayerResult::Handled(res) => res,
12036
            LayerResult::Unhandled => unsafe {
12037
0
                (dispatch_table.destroy_sampler)(device, sampler, p_allocator)
12038
            },
12039
        }
12040
0
    }
12041
0
    extern "system" fn create_descriptor_set_layout(
12042
0
        device: vk::Device,
12043
0
        p_create_info: *const vk::DescriptorSetLayoutCreateInfo,
12044
0
        p_allocator: *const vk::AllocationCallbacks,
12045
0
        p_set_layout: *mut vk::DescriptorSetLayout,
12046
0
    ) -> vk::Result {
12047
0
        let global = Self::instance();
12048
0
        // vkCreateDescriptorSetLayout
12049
0
        let device_info = global.get_device_info(device).unwrap();
12050
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12051
0
        let layer_result = device_info
12052
0
            .customized_info
12053
0
            .borrow()
12054
0
            .hooks()
12055
0
            .create_descriptor_set_layout(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
12056
0
                p_allocator.as_ref()
12057
0
            });
12058
0
        match layer_result {
12059
0
            LayerResult::Handled(res) => match res {
12060
0
                Ok(res) => {
12061
0
                    *unsafe { p_set_layout.as_mut() }.unwrap() = res;
12062
0
                    vk::Result::SUCCESS
12063
                }
12064
0
                Err(e) => e,
12065
            },
12066
            LayerResult::Unhandled => unsafe {
12067
0
                (dispatch_table.create_descriptor_set_layout)(
12068
0
                    device,
12069
0
                    p_create_info,
12070
0
                    p_allocator,
12071
0
                    p_set_layout,
12072
0
                )
12073
            },
12074
        }
12075
0
    }
12076
0
    extern "system" fn destroy_descriptor_set_layout(
12077
0
        device: vk::Device,
12078
0
        descriptor_set_layout: vk::DescriptorSetLayout,
12079
0
        p_allocator: *const vk::AllocationCallbacks,
12080
0
    ) {
12081
0
        let global = Self::instance();
12082
0
        // vkDestroyDescriptorSetLayout
12083
0
        let device_info = global.get_device_info(device).unwrap();
12084
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12085
0
        let layer_result = device_info
12086
0
            .customized_info
12087
0
            .borrow()
12088
0
            .hooks()
12089
0
            .destroy_descriptor_set_layout(descriptor_set_layout, unsafe { p_allocator.as_ref() });
12090
0
        match layer_result {
12091
0
            LayerResult::Handled(res) => res,
12092
            LayerResult::Unhandled => unsafe {
12093
0
                (dispatch_table.destroy_descriptor_set_layout)(
12094
0
                    device,
12095
0
                    descriptor_set_layout,
12096
0
                    p_allocator,
12097
0
                )
12098
            },
12099
        }
12100
0
    }
12101
0
    extern "system" fn create_descriptor_pool(
12102
0
        device: vk::Device,
12103
0
        p_create_info: *const vk::DescriptorPoolCreateInfo,
12104
0
        p_allocator: *const vk::AllocationCallbacks,
12105
0
        p_descriptor_pool: *mut vk::DescriptorPool,
12106
0
    ) -> vk::Result {
12107
0
        let global = Self::instance();
12108
0
        // vkCreateDescriptorPool
12109
0
        let device_info = global.get_device_info(device).unwrap();
12110
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12111
0
        let layer_result = device_info
12112
0
            .customized_info
12113
0
            .borrow()
12114
0
            .hooks()
12115
0
            .create_descriptor_pool(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
12116
0
                p_allocator.as_ref()
12117
0
            });
12118
0
        match layer_result {
12119
0
            LayerResult::Handled(res) => match res {
12120
0
                Ok(res) => {
12121
0
                    *unsafe { p_descriptor_pool.as_mut() }.unwrap() = res;
12122
0
                    vk::Result::SUCCESS
12123
                }
12124
0
                Err(e) => e,
12125
            },
12126
            LayerResult::Unhandled => unsafe {
12127
0
                (dispatch_table.create_descriptor_pool)(
12128
0
                    device,
12129
0
                    p_create_info,
12130
0
                    p_allocator,
12131
0
                    p_descriptor_pool,
12132
0
                )
12133
            },
12134
        }
12135
0
    }
12136
0
    extern "system" fn destroy_descriptor_pool(
12137
0
        device: vk::Device,
12138
0
        descriptor_pool: vk::DescriptorPool,
12139
0
        p_allocator: *const vk::AllocationCallbacks,
12140
0
    ) {
12141
0
        let global = Self::instance();
12142
0
        // vkDestroyDescriptorPool
12143
0
        let device_info = global.get_device_info(device).unwrap();
12144
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12145
0
        let layer_result = device_info
12146
0
            .customized_info
12147
0
            .borrow()
12148
0
            .hooks()
12149
0
            .destroy_descriptor_pool(descriptor_pool, unsafe { p_allocator.as_ref() });
12150
0
        match layer_result {
12151
0
            LayerResult::Handled(res) => res,
12152
            LayerResult::Unhandled => unsafe {
12153
0
                (dispatch_table.destroy_descriptor_pool)(device, descriptor_pool, p_allocator)
12154
            },
12155
        }
12156
0
    }
12157
0
    extern "system" fn reset_descriptor_pool(
12158
0
        device: vk::Device,
12159
0
        descriptor_pool: vk::DescriptorPool,
12160
0
        flags: vk::DescriptorPoolResetFlags,
12161
0
    ) -> vk::Result {
12162
0
        let global = Self::instance();
12163
0
        // vkResetDescriptorPool
12164
0
        let device_info = global.get_device_info(device).unwrap();
12165
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12166
0
        let layer_result = device_info
12167
0
            .customized_info
12168
0
            .borrow()
12169
0
            .hooks()
12170
0
            .reset_descriptor_pool(descriptor_pool, flags);
12171
0
        match layer_result {
12172
0
            LayerResult::Handled(res) => match res {
12173
0
                Ok(()) => vk::Result::SUCCESS,
12174
0
                Err(e) => e,
12175
            },
12176
            LayerResult::Unhandled => unsafe {
12177
0
                (dispatch_table.reset_descriptor_pool)(device, descriptor_pool, flags)
12178
            },
12179
        }
12180
0
    }
12181
0
    extern "system" fn allocate_descriptor_sets(
12182
0
        device: vk::Device,
12183
0
        p_allocate_info: *const vk::DescriptorSetAllocateInfo,
12184
0
        p_descriptor_sets: *mut vk::DescriptorSet,
12185
0
    ) -> vk::Result {
12186
0
        let global = Self::instance();
12187
0
        // vkAllocateDescriptorSets
12188
0
        let device_info = global.get_device_info(device).unwrap();
12189
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12190
0
        let layer_result = device_info
12191
0
            .customized_info
12192
0
            .borrow()
12193
0
            .hooks()
12194
0
            .allocate_descriptor_sets(unsafe { p_allocate_info.as_ref() }.unwrap());
12195
0
        match layer_result {
12196
0
            LayerResult::Handled(res) => match res {
12197
0
                Ok(res) => {
12198
0
                    unsafe {
12199
0
                        std::slice::from_raw_parts_mut(
12200
0
                            p_descriptor_sets,
12201
0
                            unsafe { p_allocate_info.as_ref().unwrap() }
12202
0
                                .descriptor_set_count
12203
0
                                .try_into()
12204
0
                                .unwrap(),
12205
0
                        )
12206
0
                    }
12207
0
                    .copy_from_slice(&res);
12208
0
                    vk::Result::SUCCESS
12209
                }
12210
0
                Err(e) => e,
12211
            },
12212
            LayerResult::Unhandled => unsafe {
12213
0
                (dispatch_table.allocate_descriptor_sets)(
12214
0
                    device,
12215
0
                    p_allocate_info,
12216
0
                    p_descriptor_sets,
12217
0
                )
12218
            },
12219
        }
12220
0
    }
12221
0
    extern "system" fn free_descriptor_sets(
12222
0
        device: vk::Device,
12223
0
        descriptor_pool: vk::DescriptorPool,
12224
0
        descriptor_set_count: u32,
12225
0
        p_descriptor_sets: *const vk::DescriptorSet,
12226
0
    ) -> vk::Result {
12227
0
        let global = Self::instance();
12228
0
        // vkFreeDescriptorSets
12229
0
        let device_info = global.get_device_info(device).unwrap();
12230
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12231
0
        let layer_result = device_info
12232
0
            .customized_info
12233
0
            .borrow()
12234
0
            .hooks()
12235
0
            .free_descriptor_sets(descriptor_pool, unsafe {
12236
0
                slice_from_raw_parts(p_descriptor_sets, descriptor_set_count)
12237
0
            });
12238
0
        match layer_result {
12239
0
            LayerResult::Handled(res) => match res {
12240
0
                Ok(()) => vk::Result::SUCCESS,
12241
0
                Err(e) => e,
12242
            },
12243
            LayerResult::Unhandled => unsafe {
12244
0
                (dispatch_table.free_descriptor_sets)(
12245
0
                    device,
12246
0
                    descriptor_pool,
12247
0
                    descriptor_set_count,
12248
0
                    p_descriptor_sets,
12249
0
                )
12250
            },
12251
        }
12252
0
    }
12253
0
    extern "system" fn update_descriptor_sets(
12254
0
        device: vk::Device,
12255
0
        descriptor_write_count: u32,
12256
0
        p_descriptor_writes: *const vk::WriteDescriptorSet,
12257
0
        descriptor_copy_count: u32,
12258
0
        p_descriptor_copies: *const vk::CopyDescriptorSet,
12259
0
    ) {
12260
0
        let global = Self::instance();
12261
0
        // vkUpdateDescriptorSets
12262
0
        let device_info = global.get_device_info(device).unwrap();
12263
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12264
0
        let layer_result = device_info
12265
0
            .customized_info
12266
0
            .borrow()
12267
0
            .hooks()
12268
0
            .update_descriptor_sets(
12269
0
                unsafe { slice_from_raw_parts(p_descriptor_writes, descriptor_write_count) },
12270
0
                unsafe { slice_from_raw_parts(p_descriptor_copies, descriptor_copy_count) },
12271
0
            );
12272
0
        match layer_result {
12273
0
            LayerResult::Handled(res) => res,
12274
            LayerResult::Unhandled => unsafe {
12275
0
                (dispatch_table.update_descriptor_sets)(
12276
0
                    device,
12277
0
                    descriptor_write_count,
12278
0
                    p_descriptor_writes,
12279
0
                    descriptor_copy_count,
12280
0
                    p_descriptor_copies,
12281
0
                )
12282
            },
12283
        }
12284
0
    }
12285
0
    extern "system" fn create_framebuffer(
12286
0
        device: vk::Device,
12287
0
        p_create_info: *const vk::FramebufferCreateInfo,
12288
0
        p_allocator: *const vk::AllocationCallbacks,
12289
0
        p_framebuffer: *mut vk::Framebuffer,
12290
0
    ) -> vk::Result {
12291
0
        let global = Self::instance();
12292
0
        // vkCreateFramebuffer
12293
0
        let device_info = global.get_device_info(device).unwrap();
12294
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12295
0
        let layer_result = device_info
12296
0
            .customized_info
12297
0
            .borrow()
12298
0
            .hooks()
12299
0
            .create_framebuffer(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
12300
0
                p_allocator.as_ref()
12301
0
            });
12302
0
        match layer_result {
12303
0
            LayerResult::Handled(res) => match res {
12304
0
                Ok(res) => {
12305
0
                    *unsafe { p_framebuffer.as_mut() }.unwrap() = res;
12306
0
                    vk::Result::SUCCESS
12307
                }
12308
0
                Err(e) => e,
12309
            },
12310
            LayerResult::Unhandled => unsafe {
12311
0
                (dispatch_table.create_framebuffer)(
12312
0
                    device,
12313
0
                    p_create_info,
12314
0
                    p_allocator,
12315
0
                    p_framebuffer,
12316
0
                )
12317
            },
12318
        }
12319
0
    }
12320
0
    extern "system" fn destroy_framebuffer(
12321
0
        device: vk::Device,
12322
0
        framebuffer: vk::Framebuffer,
12323
0
        p_allocator: *const vk::AllocationCallbacks,
12324
0
    ) {
12325
0
        let global = Self::instance();
12326
0
        // vkDestroyFramebuffer
12327
0
        let device_info = global.get_device_info(device).unwrap();
12328
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12329
0
        let layer_result = device_info
12330
0
            .customized_info
12331
0
            .borrow()
12332
0
            .hooks()
12333
0
            .destroy_framebuffer(framebuffer, unsafe { p_allocator.as_ref() });
12334
0
        match layer_result {
12335
0
            LayerResult::Handled(res) => res,
12336
            LayerResult::Unhandled => unsafe {
12337
0
                (dispatch_table.destroy_framebuffer)(device, framebuffer, p_allocator)
12338
            },
12339
        }
12340
0
    }
12341
0
    extern "system" fn create_render_pass(
12342
0
        device: vk::Device,
12343
0
        p_create_info: *const vk::RenderPassCreateInfo,
12344
0
        p_allocator: *const vk::AllocationCallbacks,
12345
0
        p_render_pass: *mut vk::RenderPass,
12346
0
    ) -> vk::Result {
12347
0
        let global = Self::instance();
12348
0
        // vkCreateRenderPass
12349
0
        let device_info = global.get_device_info(device).unwrap();
12350
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12351
0
        let layer_result = device_info
12352
0
            .customized_info
12353
0
            .borrow()
12354
0
            .hooks()
12355
0
            .create_render_pass(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
12356
0
                p_allocator.as_ref()
12357
0
            });
12358
0
        match layer_result {
12359
0
            LayerResult::Handled(res) => match res {
12360
0
                Ok(res) => {
12361
0
                    *unsafe { p_render_pass.as_mut() }.unwrap() = res;
12362
0
                    vk::Result::SUCCESS
12363
                }
12364
0
                Err(e) => e,
12365
            },
12366
            LayerResult::Unhandled => unsafe {
12367
0
                (dispatch_table.create_render_pass)(
12368
0
                    device,
12369
0
                    p_create_info,
12370
0
                    p_allocator,
12371
0
                    p_render_pass,
12372
0
                )
12373
            },
12374
        }
12375
0
    }
12376
0
    extern "system" fn destroy_render_pass(
12377
0
        device: vk::Device,
12378
0
        render_pass: vk::RenderPass,
12379
0
        p_allocator: *const vk::AllocationCallbacks,
12380
0
    ) {
12381
0
        let global = Self::instance();
12382
0
        // vkDestroyRenderPass
12383
0
        let device_info = global.get_device_info(device).unwrap();
12384
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12385
0
        let layer_result = device_info
12386
0
            .customized_info
12387
0
            .borrow()
12388
0
            .hooks()
12389
0
            .destroy_render_pass(render_pass, unsafe { p_allocator.as_ref() });
12390
0
        match layer_result {
12391
0
            LayerResult::Handled(res) => res,
12392
            LayerResult::Unhandled => unsafe {
12393
0
                (dispatch_table.destroy_render_pass)(device, render_pass, p_allocator)
12394
            },
12395
        }
12396
0
    }
12397
0
    extern "system" fn get_render_area_granularity(
12398
0
        device: vk::Device,
12399
0
        render_pass: vk::RenderPass,
12400
0
        p_granularity: *mut vk::Extent2D,
12401
0
    ) {
12402
0
        let global = Self::instance();
12403
0
        // vkGetRenderAreaGranularity
12404
0
        let device_info = global.get_device_info(device).unwrap();
12405
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12406
0
        let layer_result = device_info
12407
0
            .customized_info
12408
0
            .borrow()
12409
0
            .hooks()
12410
0
            .get_render_area_granularity(
12411
0
                render_pass,
12412
0
                unsafe { ptr_as_uninit_mut(p_granularity) }.unwrap(),
12413
0
            );
12414
0
        match layer_result {
12415
0
            LayerResult::Handled(res) => res,
12416
            LayerResult::Unhandled => unsafe {
12417
0
                (dispatch_table.get_render_area_granularity)(device, render_pass, p_granularity)
12418
            },
12419
        }
12420
0
    }
12421
0
    extern "system" fn create_command_pool(
12422
0
        device: vk::Device,
12423
0
        p_create_info: *const vk::CommandPoolCreateInfo,
12424
0
        p_allocator: *const vk::AllocationCallbacks,
12425
0
        p_command_pool: *mut vk::CommandPool,
12426
0
    ) -> vk::Result {
12427
0
        let global = Self::instance();
12428
0
        // vkCreateCommandPool
12429
0
        let device_info = global.get_device_info(device).unwrap();
12430
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12431
0
        let layer_result = device_info
12432
0
            .customized_info
12433
0
            .borrow()
12434
0
            .hooks()
12435
0
            .create_command_pool(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
12436
0
                p_allocator.as_ref()
12437
0
            });
12438
0
        match layer_result {
12439
0
            LayerResult::Handled(res) => match res {
12440
0
                Ok(res) => {
12441
0
                    *unsafe { p_command_pool.as_mut() }.unwrap() = res;
12442
0
                    vk::Result::SUCCESS
12443
                }
12444
0
                Err(e) => e,
12445
            },
12446
            LayerResult::Unhandled => unsafe {
12447
0
                (dispatch_table.create_command_pool)(
12448
0
                    device,
12449
0
                    p_create_info,
12450
0
                    p_allocator,
12451
0
                    p_command_pool,
12452
0
                )
12453
            },
12454
        }
12455
0
    }
12456
0
    extern "system" fn destroy_command_pool(
12457
0
        device: vk::Device,
12458
0
        command_pool: vk::CommandPool,
12459
0
        p_allocator: *const vk::AllocationCallbacks,
12460
0
    ) {
12461
0
        let global = Self::instance();
12462
0
        // vkDestroyCommandPool
12463
0
        let device_info = global.get_device_info(device).unwrap();
12464
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12465
0
        let layer_result = device_info
12466
0
            .customized_info
12467
0
            .borrow()
12468
0
            .hooks()
12469
0
            .destroy_command_pool(command_pool, unsafe { p_allocator.as_ref() });
12470
0
        match layer_result {
12471
0
            LayerResult::Handled(res) => res,
12472
            LayerResult::Unhandled => unsafe {
12473
0
                (dispatch_table.destroy_command_pool)(device, command_pool, p_allocator)
12474
            },
12475
        }
12476
0
    }
12477
0
    extern "system" fn reset_command_pool(
12478
0
        device: vk::Device,
12479
0
        command_pool: vk::CommandPool,
12480
0
        flags: vk::CommandPoolResetFlags,
12481
0
    ) -> vk::Result {
12482
0
        let global = Self::instance();
12483
0
        // vkResetCommandPool
12484
0
        let device_info = global.get_device_info(device).unwrap();
12485
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12486
0
        let layer_result = device_info
12487
0
            .customized_info
12488
0
            .borrow()
12489
0
            .hooks()
12490
0
            .reset_command_pool(command_pool, flags);
12491
0
        match layer_result {
12492
0
            LayerResult::Handled(res) => match res {
12493
0
                Ok(()) => vk::Result::SUCCESS,
12494
0
                Err(e) => e,
12495
            },
12496
            LayerResult::Unhandled => unsafe {
12497
0
                (dispatch_table.reset_command_pool)(device, command_pool, flags)
12498
            },
12499
        }
12500
0
    }
12501
0
    extern "system" fn allocate_command_buffers(
12502
0
        device: vk::Device,
12503
0
        p_allocate_info: *const vk::CommandBufferAllocateInfo,
12504
0
        p_command_buffers: *mut vk::CommandBuffer,
12505
0
    ) -> vk::Result {
12506
0
        let global = Self::instance();
12507
0
        // vkAllocateCommandBuffers
12508
0
        let device_info = global.get_device_info(device).unwrap();
12509
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12510
0
        let layer_result = device_info
12511
0
            .customized_info
12512
0
            .borrow()
12513
0
            .hooks()
12514
0
            .allocate_command_buffers(unsafe { p_allocate_info.as_ref() }.unwrap());
12515
0
        match layer_result {
12516
0
            LayerResult::Handled(res) => match res {
12517
0
                Ok(res) => {
12518
0
                    unsafe {
12519
0
                        std::slice::from_raw_parts_mut(
12520
0
                            p_command_buffers,
12521
0
                            unsafe { p_allocate_info.as_ref().unwrap() }
12522
0
                                .command_buffer_count
12523
0
                                .try_into()
12524
0
                                .unwrap(),
12525
0
                        )
12526
0
                    }
12527
0
                    .copy_from_slice(&res);
12528
0
                    vk::Result::SUCCESS
12529
                }
12530
0
                Err(e) => e,
12531
            },
12532
            LayerResult::Unhandled => unsafe {
12533
0
                (dispatch_table.allocate_command_buffers)(
12534
0
                    device,
12535
0
                    p_allocate_info,
12536
0
                    p_command_buffers,
12537
0
                )
12538
            },
12539
        }
12540
0
    }
12541
0
    extern "system" fn free_command_buffers(
12542
0
        device: vk::Device,
12543
0
        command_pool: vk::CommandPool,
12544
0
        command_buffer_count: u32,
12545
0
        p_command_buffers: *const vk::CommandBuffer,
12546
0
    ) {
12547
0
        let global = Self::instance();
12548
0
        // vkFreeCommandBuffers
12549
0
        let device_info = global.get_device_info(device).unwrap();
12550
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12551
0
        let layer_result = device_info
12552
0
            .customized_info
12553
0
            .borrow()
12554
0
            .hooks()
12555
0
            .free_command_buffers(command_pool, unsafe {
12556
0
                slice_from_raw_parts(p_command_buffers, command_buffer_count)
12557
0
            });
12558
0
        match layer_result {
12559
0
            LayerResult::Handled(res) => res,
12560
            LayerResult::Unhandled => unsafe {
12561
0
                (dispatch_table.free_command_buffers)(
12562
0
                    device,
12563
0
                    command_pool,
12564
0
                    command_buffer_count,
12565
0
                    p_command_buffers,
12566
0
                )
12567
            },
12568
        }
12569
0
    }
12570
0
    extern "system" fn begin_command_buffer(
12571
0
        command_buffer: vk::CommandBuffer,
12572
0
        p_begin_info: *const vk::CommandBufferBeginInfo,
12573
0
    ) -> vk::Result {
12574
0
        let global = Self::instance();
12575
0
        // vkBeginCommandBuffer
12576
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12577
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12578
0
        let layer_result = device_info
12579
0
            .customized_info
12580
0
            .borrow()
12581
0
            .hooks()
12582
0
            .begin_command_buffer(command_buffer, unsafe { p_begin_info.as_ref() }.unwrap());
12583
0
        match layer_result {
12584
0
            LayerResult::Handled(res) => match res {
12585
0
                Ok(()) => vk::Result::SUCCESS,
12586
0
                Err(e) => e,
12587
            },
12588
            LayerResult::Unhandled => unsafe {
12589
0
                (dispatch_table.begin_command_buffer)(command_buffer, p_begin_info)
12590
            },
12591
        }
12592
0
    }
12593
0
    extern "system" fn end_command_buffer(command_buffer: vk::CommandBuffer) -> vk::Result {
12594
0
        let global = Self::instance();
12595
0
        // vkEndCommandBuffer
12596
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12597
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12598
0
        let layer_result = device_info
12599
0
            .customized_info
12600
0
            .borrow()
12601
0
            .hooks()
12602
0
            .end_command_buffer(command_buffer);
12603
0
        match layer_result {
12604
0
            LayerResult::Handled(res) => match res {
12605
0
                Ok(()) => vk::Result::SUCCESS,
12606
0
                Err(e) => e,
12607
            },
12608
            LayerResult::Unhandled => unsafe {
12609
0
                (dispatch_table.end_command_buffer)(command_buffer)
12610
            },
12611
        }
12612
0
    }
12613
0
    extern "system" fn reset_command_buffer(
12614
0
        command_buffer: vk::CommandBuffer,
12615
0
        flags: vk::CommandBufferResetFlags,
12616
0
    ) -> vk::Result {
12617
0
        let global = Self::instance();
12618
0
        // vkResetCommandBuffer
12619
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12620
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12621
0
        let layer_result = device_info
12622
0
            .customized_info
12623
0
            .borrow()
12624
0
            .hooks()
12625
0
            .reset_command_buffer(command_buffer, flags);
12626
0
        match layer_result {
12627
0
            LayerResult::Handled(res) => match res {
12628
0
                Ok(()) => vk::Result::SUCCESS,
12629
0
                Err(e) => e,
12630
            },
12631
            LayerResult::Unhandled => unsafe {
12632
0
                (dispatch_table.reset_command_buffer)(command_buffer, flags)
12633
            },
12634
        }
12635
0
    }
12636
0
    extern "system" fn cmd_bind_pipeline(
12637
0
        command_buffer: vk::CommandBuffer,
12638
0
        pipeline_bind_point: vk::PipelineBindPoint,
12639
0
        pipeline: vk::Pipeline,
12640
0
    ) {
12641
0
        let global = Self::instance();
12642
0
        // vkCmdBindPipeline
12643
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12644
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12645
0
        let layer_result = device_info
12646
0
            .customized_info
12647
0
            .borrow()
12648
0
            .hooks()
12649
0
            .cmd_bind_pipeline(command_buffer, pipeline_bind_point, pipeline);
12650
0
        match layer_result {
12651
0
            LayerResult::Handled(res) => res,
12652
            LayerResult::Unhandled => unsafe {
12653
0
                (dispatch_table.cmd_bind_pipeline)(command_buffer, pipeline_bind_point, pipeline)
12654
            },
12655
        }
12656
0
    }
12657
0
    extern "system" fn cmd_set_viewport(
12658
0
        command_buffer: vk::CommandBuffer,
12659
0
        first_viewport: u32,
12660
0
        viewport_count: u32,
12661
0
        p_viewports: *const vk::Viewport,
12662
0
    ) {
12663
0
        let global = Self::instance();
12664
0
        // vkCmdSetViewport
12665
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12666
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12667
0
        let layer_result = device_info
12668
0
            .customized_info
12669
0
            .borrow()
12670
0
            .hooks()
12671
0
            .cmd_set_viewport(command_buffer, first_viewport, unsafe {
12672
0
                slice_from_raw_parts(p_viewports, viewport_count)
12673
0
            });
12674
0
        match layer_result {
12675
0
            LayerResult::Handled(res) => res,
12676
            LayerResult::Unhandled => unsafe {
12677
0
                (dispatch_table.cmd_set_viewport)(
12678
0
                    command_buffer,
12679
0
                    first_viewport,
12680
0
                    viewport_count,
12681
0
                    p_viewports,
12682
0
                )
12683
            },
12684
        }
12685
0
    }
12686
0
    extern "system" fn cmd_set_scissor(
12687
0
        command_buffer: vk::CommandBuffer,
12688
0
        first_scissor: u32,
12689
0
        scissor_count: u32,
12690
0
        p_scissors: *const vk::Rect2D,
12691
0
    ) {
12692
0
        let global = Self::instance();
12693
0
        // vkCmdSetScissor
12694
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12695
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12696
0
        let layer_result = device_info
12697
0
            .customized_info
12698
0
            .borrow()
12699
0
            .hooks()
12700
0
            .cmd_set_scissor(command_buffer, first_scissor, unsafe {
12701
0
                slice_from_raw_parts(p_scissors, scissor_count)
12702
0
            });
12703
0
        match layer_result {
12704
0
            LayerResult::Handled(res) => res,
12705
            LayerResult::Unhandled => unsafe {
12706
0
                (dispatch_table.cmd_set_scissor)(
12707
0
                    command_buffer,
12708
0
                    first_scissor,
12709
0
                    scissor_count,
12710
0
                    p_scissors,
12711
0
                )
12712
            },
12713
        }
12714
0
    }
12715
0
    extern "system" fn cmd_set_line_width(command_buffer: vk::CommandBuffer, line_width: f32) {
12716
0
        let global = Self::instance();
12717
0
        // vkCmdSetLineWidth
12718
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12719
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12720
0
        let layer_result = device_info
12721
0
            .customized_info
12722
0
            .borrow()
12723
0
            .hooks()
12724
0
            .cmd_set_line_width(command_buffer, line_width);
12725
0
        match layer_result {
12726
0
            LayerResult::Handled(res) => res,
12727
            LayerResult::Unhandled => unsafe {
12728
0
                (dispatch_table.cmd_set_line_width)(command_buffer, line_width)
12729
            },
12730
        }
12731
0
    }
12732
0
    extern "system" fn cmd_set_depth_bias(
12733
0
        command_buffer: vk::CommandBuffer,
12734
0
        depth_bias_constant_factor: f32,
12735
0
        depth_bias_clamp: f32,
12736
0
        depth_bias_slope_factor: f32,
12737
0
    ) {
12738
0
        let global = Self::instance();
12739
0
        // vkCmdSetDepthBias
12740
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12741
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12742
0
        let layer_result = device_info
12743
0
            .customized_info
12744
0
            .borrow()
12745
0
            .hooks()
12746
0
            .cmd_set_depth_bias(
12747
0
                command_buffer,
12748
0
                depth_bias_constant_factor,
12749
0
                depth_bias_clamp,
12750
0
                depth_bias_slope_factor,
12751
0
            );
12752
0
        match layer_result {
12753
0
            LayerResult::Handled(res) => res,
12754
            LayerResult::Unhandled => unsafe {
12755
0
                (dispatch_table.cmd_set_depth_bias)(
12756
0
                    command_buffer,
12757
0
                    depth_bias_constant_factor,
12758
0
                    depth_bias_clamp,
12759
0
                    depth_bias_slope_factor,
12760
0
                )
12761
            },
12762
        }
12763
0
    }
12764
0
    extern "system" fn cmd_set_blend_constants(
12765
0
        command_buffer: vk::CommandBuffer,
12766
0
        blend_constants: *const [f32; 4],
12767
0
    ) {
12768
0
        let global = Self::instance();
12769
0
        // vkCmdSetBlendConstants
12770
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12771
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12772
0
        let layer_result = device_info
12773
0
            .customized_info
12774
0
            .borrow()
12775
0
            .hooks()
12776
0
            .cmd_set_blend_constants(command_buffer, unsafe { blend_constants.as_ref() }.unwrap());
12777
0
        match layer_result {
12778
0
            LayerResult::Handled(res) => res,
12779
            LayerResult::Unhandled => unsafe {
12780
0
                (dispatch_table.cmd_set_blend_constants)(command_buffer, blend_constants)
12781
            },
12782
        }
12783
0
    }
12784
0
    extern "system" fn cmd_set_depth_bounds(
12785
0
        command_buffer: vk::CommandBuffer,
12786
0
        min_depth_bounds: f32,
12787
0
        max_depth_bounds: f32,
12788
0
    ) {
12789
0
        let global = Self::instance();
12790
0
        // vkCmdSetDepthBounds
12791
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12792
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12793
0
        let layer_result = device_info
12794
0
            .customized_info
12795
0
            .borrow()
12796
0
            .hooks()
12797
0
            .cmd_set_depth_bounds(command_buffer, min_depth_bounds, max_depth_bounds);
12798
0
        match layer_result {
12799
0
            LayerResult::Handled(res) => res,
12800
            LayerResult::Unhandled => unsafe {
12801
0
                (dispatch_table.cmd_set_depth_bounds)(
12802
0
                    command_buffer,
12803
0
                    min_depth_bounds,
12804
0
                    max_depth_bounds,
12805
0
                )
12806
            },
12807
        }
12808
0
    }
12809
0
    extern "system" fn cmd_set_stencil_compare_mask(
12810
0
        command_buffer: vk::CommandBuffer,
12811
0
        face_mask: vk::StencilFaceFlags,
12812
0
        compare_mask: u32,
12813
0
    ) {
12814
0
        let global = Self::instance();
12815
0
        // vkCmdSetStencilCompareMask
12816
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12817
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12818
0
        let layer_result = device_info
12819
0
            .customized_info
12820
0
            .borrow()
12821
0
            .hooks()
12822
0
            .cmd_set_stencil_compare_mask(command_buffer, face_mask, compare_mask);
12823
0
        match layer_result {
12824
0
            LayerResult::Handled(res) => res,
12825
            LayerResult::Unhandled => unsafe {
12826
0
                (dispatch_table.cmd_set_stencil_compare_mask)(
12827
0
                    command_buffer,
12828
0
                    face_mask,
12829
0
                    compare_mask,
12830
0
                )
12831
            },
12832
        }
12833
0
    }
12834
0
    extern "system" fn cmd_set_stencil_write_mask(
12835
0
        command_buffer: vk::CommandBuffer,
12836
0
        face_mask: vk::StencilFaceFlags,
12837
0
        write_mask: u32,
12838
0
    ) {
12839
0
        let global = Self::instance();
12840
0
        // vkCmdSetStencilWriteMask
12841
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12842
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12843
0
        let layer_result = device_info
12844
0
            .customized_info
12845
0
            .borrow()
12846
0
            .hooks()
12847
0
            .cmd_set_stencil_write_mask(command_buffer, face_mask, write_mask);
12848
0
        match layer_result {
12849
0
            LayerResult::Handled(res) => res,
12850
            LayerResult::Unhandled => unsafe {
12851
0
                (dispatch_table.cmd_set_stencil_write_mask)(command_buffer, face_mask, write_mask)
12852
            },
12853
        }
12854
0
    }
12855
0
    extern "system" fn cmd_set_stencil_reference(
12856
0
        command_buffer: vk::CommandBuffer,
12857
0
        face_mask: vk::StencilFaceFlags,
12858
0
        reference: u32,
12859
0
    ) {
12860
0
        let global = Self::instance();
12861
0
        // vkCmdSetStencilReference
12862
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12863
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12864
0
        let layer_result = device_info
12865
0
            .customized_info
12866
0
            .borrow()
12867
0
            .hooks()
12868
0
            .cmd_set_stencil_reference(command_buffer, face_mask, reference);
12869
0
        match layer_result {
12870
0
            LayerResult::Handled(res) => res,
12871
            LayerResult::Unhandled => unsafe {
12872
0
                (dispatch_table.cmd_set_stencil_reference)(command_buffer, face_mask, reference)
12873
            },
12874
        }
12875
0
    }
12876
0
    extern "system" fn cmd_bind_descriptor_sets(
12877
0
        command_buffer: vk::CommandBuffer,
12878
0
        pipeline_bind_point: vk::PipelineBindPoint,
12879
0
        layout: vk::PipelineLayout,
12880
0
        first_set: u32,
12881
0
        descriptor_set_count: u32,
12882
0
        p_descriptor_sets: *const vk::DescriptorSet,
12883
0
        dynamic_offset_count: u32,
12884
0
        p_dynamic_offsets: *const u32,
12885
0
    ) {
12886
0
        let global = Self::instance();
12887
0
        // vkCmdBindDescriptorSets
12888
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12889
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12890
0
        let layer_result = device_info
12891
0
            .customized_info
12892
0
            .borrow()
12893
0
            .hooks()
12894
0
            .cmd_bind_descriptor_sets(
12895
0
                command_buffer,
12896
0
                pipeline_bind_point,
12897
0
                layout,
12898
0
                first_set,
12899
0
                unsafe { slice_from_raw_parts(p_descriptor_sets, descriptor_set_count) },
12900
0
                unsafe { slice_from_raw_parts(p_dynamic_offsets, dynamic_offset_count) },
12901
0
            );
12902
0
        match layer_result {
12903
0
            LayerResult::Handled(res) => res,
12904
            LayerResult::Unhandled => unsafe {
12905
0
                (dispatch_table.cmd_bind_descriptor_sets)(
12906
0
                    command_buffer,
12907
0
                    pipeline_bind_point,
12908
0
                    layout,
12909
0
                    first_set,
12910
0
                    descriptor_set_count,
12911
0
                    p_descriptor_sets,
12912
0
                    dynamic_offset_count,
12913
0
                    p_dynamic_offsets,
12914
0
                )
12915
            },
12916
        }
12917
0
    }
12918
0
    extern "system" fn cmd_bind_index_buffer(
12919
0
        command_buffer: vk::CommandBuffer,
12920
0
        buffer: vk::Buffer,
12921
0
        offset: vk::DeviceSize,
12922
0
        index_type: vk::IndexType,
12923
0
    ) {
12924
0
        let global = Self::instance();
12925
0
        // vkCmdBindIndexBuffer
12926
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12927
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12928
0
        let layer_result = device_info
12929
0
            .customized_info
12930
0
            .borrow()
12931
0
            .hooks()
12932
0
            .cmd_bind_index_buffer(command_buffer, buffer, offset, index_type);
12933
0
        match layer_result {
12934
0
            LayerResult::Handled(res) => res,
12935
            LayerResult::Unhandled => unsafe {
12936
0
                (dispatch_table.cmd_bind_index_buffer)(command_buffer, buffer, offset, index_type)
12937
            },
12938
        }
12939
0
    }
12940
0
    extern "system" fn cmd_bind_vertex_buffers(
12941
0
        command_buffer: vk::CommandBuffer,
12942
0
        first_binding: u32,
12943
0
        binding_count: u32,
12944
0
        p_buffers: *const vk::Buffer,
12945
0
        p_offsets: *const vk::DeviceSize,
12946
0
    ) {
12947
0
        let global = Self::instance();
12948
0
        // vkCmdBindVertexBuffers
12949
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12950
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12951
0
        let layer_result = device_info
12952
0
            .customized_info
12953
0
            .borrow()
12954
0
            .hooks()
12955
0
            .cmd_bind_vertex_buffers(
12956
0
                command_buffer,
12957
0
                first_binding,
12958
0
                unsafe { slice_from_raw_parts(p_buffers, binding_count) },
12959
0
                unsafe { slice_from_raw_parts(p_offsets, binding_count) },
12960
0
            );
12961
0
        match layer_result {
12962
0
            LayerResult::Handled(res) => res,
12963
            LayerResult::Unhandled => unsafe {
12964
0
                (dispatch_table.cmd_bind_vertex_buffers)(
12965
0
                    command_buffer,
12966
0
                    first_binding,
12967
0
                    binding_count,
12968
0
                    p_buffers,
12969
0
                    p_offsets,
12970
0
                )
12971
            },
12972
        }
12973
0
    }
12974
0
    extern "system" fn cmd_draw(
12975
0
        command_buffer: vk::CommandBuffer,
12976
0
        vertex_count: u32,
12977
0
        instance_count: u32,
12978
0
        first_vertex: u32,
12979
0
        first_instance: u32,
12980
0
    ) {
12981
0
        let global = Self::instance();
12982
0
        // vkCmdDraw
12983
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12984
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12985
0
        let layer_result = device_info.customized_info.borrow().hooks().cmd_draw(
12986
0
            command_buffer,
12987
0
            vertex_count,
12988
0
            instance_count,
12989
0
            first_vertex,
12990
0
            first_instance,
12991
0
        );
12992
0
        match layer_result {
12993
0
            LayerResult::Handled(res) => res,
12994
            LayerResult::Unhandled => unsafe {
12995
0
                (dispatch_table.cmd_draw)(
12996
0
                    command_buffer,
12997
0
                    vertex_count,
12998
0
                    instance_count,
12999
0
                    first_vertex,
13000
0
                    first_instance,
13001
0
                )
13002
            },
13003
        }
13004
0
    }
13005
0
    extern "system" fn cmd_draw_indexed(
13006
0
        command_buffer: vk::CommandBuffer,
13007
0
        index_count: u32,
13008
0
        instance_count: u32,
13009
0
        first_index: u32,
13010
0
        vertex_offset: i32,
13011
0
        first_instance: u32,
13012
0
    ) {
13013
0
        let global = Self::instance();
13014
0
        // vkCmdDrawIndexed
13015
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13016
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13017
0
        let layer_result = device_info
13018
0
            .customized_info
13019
0
            .borrow()
13020
0
            .hooks()
13021
0
            .cmd_draw_indexed(
13022
0
                command_buffer,
13023
0
                index_count,
13024
0
                instance_count,
13025
0
                first_index,
13026
0
                vertex_offset,
13027
0
                first_instance,
13028
0
            );
13029
0
        match layer_result {
13030
0
            LayerResult::Handled(res) => res,
13031
            LayerResult::Unhandled => unsafe {
13032
0
                (dispatch_table.cmd_draw_indexed)(
13033
0
                    command_buffer,
13034
0
                    index_count,
13035
0
                    instance_count,
13036
0
                    first_index,
13037
0
                    vertex_offset,
13038
0
                    first_instance,
13039
0
                )
13040
            },
13041
        }
13042
0
    }
13043
0
    extern "system" fn cmd_draw_indirect(
13044
0
        command_buffer: vk::CommandBuffer,
13045
0
        buffer: vk::Buffer,
13046
0
        offset: vk::DeviceSize,
13047
0
        draw_count: u32,
13048
0
        stride: u32,
13049
0
    ) {
13050
0
        let global = Self::instance();
13051
0
        // vkCmdDrawIndirect
13052
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13053
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13054
0
        let layer_result = device_info
13055
0
            .customized_info
13056
0
            .borrow()
13057
0
            .hooks()
13058
0
            .cmd_draw_indirect(command_buffer, buffer, offset, draw_count, stride);
13059
0
        match layer_result {
13060
0
            LayerResult::Handled(res) => res,
13061
            LayerResult::Unhandled => unsafe {
13062
0
                (dispatch_table.cmd_draw_indirect)(
13063
0
                    command_buffer,
13064
0
                    buffer,
13065
0
                    offset,
13066
0
                    draw_count,
13067
0
                    stride,
13068
0
                )
13069
            },
13070
        }
13071
0
    }
13072
0
    extern "system" fn cmd_draw_indexed_indirect(
13073
0
        command_buffer: vk::CommandBuffer,
13074
0
        buffer: vk::Buffer,
13075
0
        offset: vk::DeviceSize,
13076
0
        draw_count: u32,
13077
0
        stride: u32,
13078
0
    ) {
13079
0
        let global = Self::instance();
13080
0
        // vkCmdDrawIndexedIndirect
13081
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13082
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13083
0
        let layer_result = device_info
13084
0
            .customized_info
13085
0
            .borrow()
13086
0
            .hooks()
13087
0
            .cmd_draw_indexed_indirect(command_buffer, buffer, offset, draw_count, stride);
13088
0
        match layer_result {
13089
0
            LayerResult::Handled(res) => res,
13090
            LayerResult::Unhandled => unsafe {
13091
0
                (dispatch_table.cmd_draw_indexed_indirect)(
13092
0
                    command_buffer,
13093
0
                    buffer,
13094
0
                    offset,
13095
0
                    draw_count,
13096
0
                    stride,
13097
0
                )
13098
            },
13099
        }
13100
0
    }
13101
0
    extern "system" fn cmd_dispatch(
13102
0
        command_buffer: vk::CommandBuffer,
13103
0
        group_countx: u32,
13104
0
        group_county: u32,
13105
0
        group_countz: u32,
13106
0
    ) {
13107
0
        let global = Self::instance();
13108
0
        // vkCmdDispatch
13109
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13110
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13111
0
        let layer_result = device_info.customized_info.borrow().hooks().cmd_dispatch(
13112
0
            command_buffer,
13113
0
            group_countx,
13114
0
            group_county,
13115
0
            group_countz,
13116
0
        );
13117
0
        match layer_result {
13118
0
            LayerResult::Handled(res) => res,
13119
            LayerResult::Unhandled => unsafe {
13120
0
                (dispatch_table.cmd_dispatch)(
13121
0
                    command_buffer,
13122
0
                    group_countx,
13123
0
                    group_county,
13124
0
                    group_countz,
13125
0
                )
13126
            },
13127
        }
13128
0
    }
13129
0
    extern "system" fn cmd_dispatch_indirect(
13130
0
        command_buffer: vk::CommandBuffer,
13131
0
        buffer: vk::Buffer,
13132
0
        offset: vk::DeviceSize,
13133
0
    ) {
13134
0
        let global = Self::instance();
13135
0
        // vkCmdDispatchIndirect
13136
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13137
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13138
0
        let layer_result = device_info
13139
0
            .customized_info
13140
0
            .borrow()
13141
0
            .hooks()
13142
0
            .cmd_dispatch_indirect(command_buffer, buffer, offset);
13143
0
        match layer_result {
13144
0
            LayerResult::Handled(res) => res,
13145
            LayerResult::Unhandled => unsafe {
13146
0
                (dispatch_table.cmd_dispatch_indirect)(command_buffer, buffer, offset)
13147
            },
13148
        }
13149
0
    }
13150
0
    extern "system" fn cmd_copy_buffer(
13151
0
        command_buffer: vk::CommandBuffer,
13152
0
        src_buffer: vk::Buffer,
13153
0
        dst_buffer: vk::Buffer,
13154
0
        region_count: u32,
13155
0
        p_regions: *const vk::BufferCopy,
13156
0
    ) {
13157
0
        let global = Self::instance();
13158
0
        // vkCmdCopyBuffer
13159
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13160
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13161
0
        let layer_result = device_info
13162
0
            .customized_info
13163
0
            .borrow()
13164
0
            .hooks()
13165
0
            .cmd_copy_buffer(command_buffer, src_buffer, dst_buffer, unsafe {
13166
0
                slice_from_raw_parts(p_regions, region_count)
13167
0
            });
13168
0
        match layer_result {
13169
0
            LayerResult::Handled(res) => res,
13170
            LayerResult::Unhandled => unsafe {
13171
0
                (dispatch_table.cmd_copy_buffer)(
13172
0
                    command_buffer,
13173
0
                    src_buffer,
13174
0
                    dst_buffer,
13175
0
                    region_count,
13176
0
                    p_regions,
13177
0
                )
13178
            },
13179
        }
13180
0
    }
13181
0
    extern "system" fn cmd_copy_image(
13182
0
        command_buffer: vk::CommandBuffer,
13183
0
        src_image: vk::Image,
13184
0
        src_image_layout: vk::ImageLayout,
13185
0
        dst_image: vk::Image,
13186
0
        dst_image_layout: vk::ImageLayout,
13187
0
        region_count: u32,
13188
0
        p_regions: *const vk::ImageCopy,
13189
0
    ) {
13190
0
        let global = Self::instance();
13191
0
        // vkCmdCopyImage
13192
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13193
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13194
0
        let layer_result = device_info.customized_info.borrow().hooks().cmd_copy_image(
13195
0
            command_buffer,
13196
0
            src_image,
13197
0
            src_image_layout,
13198
0
            dst_image,
13199
0
            dst_image_layout,
13200
0
            unsafe { slice_from_raw_parts(p_regions, region_count) },
13201
0
        );
13202
0
        match layer_result {
13203
0
            LayerResult::Handled(res) => res,
13204
            LayerResult::Unhandled => unsafe {
13205
0
                (dispatch_table.cmd_copy_image)(
13206
0
                    command_buffer,
13207
0
                    src_image,
13208
0
                    src_image_layout,
13209
0
                    dst_image,
13210
0
                    dst_image_layout,
13211
0
                    region_count,
13212
0
                    p_regions,
13213
0
                )
13214
            },
13215
        }
13216
0
    }
13217
0
    extern "system" fn cmd_blit_image(
13218
0
        command_buffer: vk::CommandBuffer,
13219
0
        src_image: vk::Image,
13220
0
        src_image_layout: vk::ImageLayout,
13221
0
        dst_image: vk::Image,
13222
0
        dst_image_layout: vk::ImageLayout,
13223
0
        region_count: u32,
13224
0
        p_regions: *const vk::ImageBlit,
13225
0
        filter: vk::Filter,
13226
0
    ) {
13227
0
        let global = Self::instance();
13228
0
        // vkCmdBlitImage
13229
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13230
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13231
0
        let layer_result = device_info.customized_info.borrow().hooks().cmd_blit_image(
13232
0
            command_buffer,
13233
0
            src_image,
13234
0
            src_image_layout,
13235
0
            dst_image,
13236
0
            dst_image_layout,
13237
0
            unsafe { slice_from_raw_parts(p_regions, region_count) },
13238
0
            filter,
13239
0
        );
13240
0
        match layer_result {
13241
0
            LayerResult::Handled(res) => res,
13242
            LayerResult::Unhandled => unsafe {
13243
0
                (dispatch_table.cmd_blit_image)(
13244
0
                    command_buffer,
13245
0
                    src_image,
13246
0
                    src_image_layout,
13247
0
                    dst_image,
13248
0
                    dst_image_layout,
13249
0
                    region_count,
13250
0
                    p_regions,
13251
0
                    filter,
13252
0
                )
13253
            },
13254
        }
13255
0
    }
13256
0
    extern "system" fn cmd_copy_buffer_to_image(
13257
0
        command_buffer: vk::CommandBuffer,
13258
0
        src_buffer: vk::Buffer,
13259
0
        dst_image: vk::Image,
13260
0
        dst_image_layout: vk::ImageLayout,
13261
0
        region_count: u32,
13262
0
        p_regions: *const vk::BufferImageCopy,
13263
0
    ) {
13264
0
        let global = Self::instance();
13265
0
        // vkCmdCopyBufferToImage
13266
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13267
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13268
0
        let layer_result = device_info
13269
0
            .customized_info
13270
0
            .borrow()
13271
0
            .hooks()
13272
0
            .cmd_copy_buffer_to_image(
13273
0
                command_buffer,
13274
0
                src_buffer,
13275
0
                dst_image,
13276
0
                dst_image_layout,
13277
0
                unsafe { slice_from_raw_parts(p_regions, region_count) },
13278
0
            );
13279
0
        match layer_result {
13280
0
            LayerResult::Handled(res) => res,
13281
            LayerResult::Unhandled => unsafe {
13282
0
                (dispatch_table.cmd_copy_buffer_to_image)(
13283
0
                    command_buffer,
13284
0
                    src_buffer,
13285
0
                    dst_image,
13286
0
                    dst_image_layout,
13287
0
                    region_count,
13288
0
                    p_regions,
13289
0
                )
13290
            },
13291
        }
13292
0
    }
13293
0
    extern "system" fn cmd_copy_image_to_buffer(
13294
0
        command_buffer: vk::CommandBuffer,
13295
0
        src_image: vk::Image,
13296
0
        src_image_layout: vk::ImageLayout,
13297
0
        dst_buffer: vk::Buffer,
13298
0
        region_count: u32,
13299
0
        p_regions: *const vk::BufferImageCopy,
13300
0
    ) {
13301
0
        let global = Self::instance();
13302
0
        // vkCmdCopyImageToBuffer
13303
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13304
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13305
0
        let layer_result = device_info
13306
0
            .customized_info
13307
0
            .borrow()
13308
0
            .hooks()
13309
0
            .cmd_copy_image_to_buffer(
13310
0
                command_buffer,
13311
0
                src_image,
13312
0
                src_image_layout,
13313
0
                dst_buffer,
13314
0
                unsafe { slice_from_raw_parts(p_regions, region_count) },
13315
0
            );
13316
0
        match layer_result {
13317
0
            LayerResult::Handled(res) => res,
13318
            LayerResult::Unhandled => unsafe {
13319
0
                (dispatch_table.cmd_copy_image_to_buffer)(
13320
0
                    command_buffer,
13321
0
                    src_image,
13322
0
                    src_image_layout,
13323
0
                    dst_buffer,
13324
0
                    region_count,
13325
0
                    p_regions,
13326
0
                )
13327
            },
13328
        }
13329
0
    }
13330
0
    extern "system" fn cmd_update_buffer(
13331
0
        command_buffer: vk::CommandBuffer,
13332
0
        dst_buffer: vk::Buffer,
13333
0
        dst_offset: vk::DeviceSize,
13334
0
        data_size: vk::DeviceSize,
13335
0
        p_data: *const c_void,
13336
0
    ) {
13337
0
        let global = Self::instance();
13338
0
        // vkCmdUpdateBuffer
13339
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13340
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13341
0
        let layer_result = device_info
13342
0
            .customized_info
13343
0
            .borrow()
13344
0
            .hooks()
13345
0
            .cmd_update_buffer(command_buffer, dst_buffer, dst_offset, unsafe {
13346
0
                slice_from_raw_parts(p_data as *const u8, data_size)
13347
0
            });
13348
0
        match layer_result {
13349
0
            LayerResult::Handled(res) => res,
13350
            LayerResult::Unhandled => unsafe {
13351
0
                (dispatch_table.cmd_update_buffer)(
13352
0
                    command_buffer,
13353
0
                    dst_buffer,
13354
0
                    dst_offset,
13355
0
                    data_size,
13356
0
                    p_data,
13357
0
                )
13358
            },
13359
        }
13360
0
    }
13361
0
    extern "system" fn cmd_fill_buffer(
13362
0
        command_buffer: vk::CommandBuffer,
13363
0
        dst_buffer: vk::Buffer,
13364
0
        dst_offset: vk::DeviceSize,
13365
0
        size: vk::DeviceSize,
13366
0
        data: u32,
13367
0
    ) {
13368
0
        let global = Self::instance();
13369
0
        // vkCmdFillBuffer
13370
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13371
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13372
0
        let layer_result = device_info
13373
0
            .customized_info
13374
0
            .borrow()
13375
0
            .hooks()
13376
0
            .cmd_fill_buffer(command_buffer, dst_buffer, dst_offset, size, data);
13377
0
        match layer_result {
13378
0
            LayerResult::Handled(res) => res,
13379
            LayerResult::Unhandled => unsafe {
13380
0
                (dispatch_table.cmd_fill_buffer)(command_buffer, dst_buffer, dst_offset, size, data)
13381
            },
13382
        }
13383
0
    }
13384
0
    extern "system" fn cmd_clear_color_image(
13385
0
        command_buffer: vk::CommandBuffer,
13386
0
        image: vk::Image,
13387
0
        image_layout: vk::ImageLayout,
13388
0
        p_color: *const vk::ClearColorValue,
13389
0
        range_count: u32,
13390
0
        p_ranges: *const vk::ImageSubresourceRange,
13391
0
    ) {
13392
0
        let global = Self::instance();
13393
0
        // vkCmdClearColorImage
13394
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13395
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13396
0
        let layer_result = device_info
13397
0
            .customized_info
13398
0
            .borrow()
13399
0
            .hooks()
13400
0
            .cmd_clear_color_image(
13401
0
                command_buffer,
13402
0
                image,
13403
0
                image_layout,
13404
0
                unsafe { p_color.as_ref() }.unwrap(),
13405
0
                unsafe { slice_from_raw_parts(p_ranges, range_count) },
13406
0
            );
13407
0
        match layer_result {
13408
0
            LayerResult::Handled(res) => res,
13409
            LayerResult::Unhandled => unsafe {
13410
0
                (dispatch_table.cmd_clear_color_image)(
13411
0
                    command_buffer,
13412
0
                    image,
13413
0
                    image_layout,
13414
0
                    p_color,
13415
0
                    range_count,
13416
0
                    p_ranges,
13417
0
                )
13418
            },
13419
        }
13420
0
    }
13421
0
    extern "system" fn cmd_clear_depth_stencil_image(
13422
0
        command_buffer: vk::CommandBuffer,
13423
0
        image: vk::Image,
13424
0
        image_layout: vk::ImageLayout,
13425
0
        p_depth_stencil: *const vk::ClearDepthStencilValue,
13426
0
        range_count: u32,
13427
0
        p_ranges: *const vk::ImageSubresourceRange,
13428
0
    ) {
13429
0
        let global = Self::instance();
13430
0
        // vkCmdClearDepthStencilImage
13431
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13432
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13433
0
        let layer_result = device_info
13434
0
            .customized_info
13435
0
            .borrow()
13436
0
            .hooks()
13437
0
            .cmd_clear_depth_stencil_image(
13438
0
                command_buffer,
13439
0
                image,
13440
0
                image_layout,
13441
0
                unsafe { p_depth_stencil.as_ref() }.unwrap(),
13442
0
                unsafe { slice_from_raw_parts(p_ranges, range_count) },
13443
0
            );
13444
0
        match layer_result {
13445
0
            LayerResult::Handled(res) => res,
13446
            LayerResult::Unhandled => unsafe {
13447
0
                (dispatch_table.cmd_clear_depth_stencil_image)(
13448
0
                    command_buffer,
13449
0
                    image,
13450
0
                    image_layout,
13451
0
                    p_depth_stencil,
13452
0
                    range_count,
13453
0
                    p_ranges,
13454
0
                )
13455
            },
13456
        }
13457
0
    }
13458
0
    extern "system" fn cmd_clear_attachments(
13459
0
        command_buffer: vk::CommandBuffer,
13460
0
        attachment_count: u32,
13461
0
        p_attachments: *const vk::ClearAttachment,
13462
0
        rect_count: u32,
13463
0
        p_rects: *const vk::ClearRect,
13464
0
    ) {
13465
0
        let global = Self::instance();
13466
0
        // vkCmdClearAttachments
13467
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13468
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13469
0
        let layer_result = device_info
13470
0
            .customized_info
13471
0
            .borrow()
13472
0
            .hooks()
13473
0
            .cmd_clear_attachments(
13474
0
                command_buffer,
13475
0
                unsafe { slice_from_raw_parts(p_attachments, attachment_count) },
13476
0
                unsafe { slice_from_raw_parts(p_rects, rect_count) },
13477
0
            );
13478
0
        match layer_result {
13479
0
            LayerResult::Handled(res) => res,
13480
            LayerResult::Unhandled => unsafe {
13481
0
                (dispatch_table.cmd_clear_attachments)(
13482
0
                    command_buffer,
13483
0
                    attachment_count,
13484
0
                    p_attachments,
13485
0
                    rect_count,
13486
0
                    p_rects,
13487
0
                )
13488
            },
13489
        }
13490
0
    }
13491
0
    extern "system" fn cmd_resolve_image(
13492
0
        command_buffer: vk::CommandBuffer,
13493
0
        src_image: vk::Image,
13494
0
        src_image_layout: vk::ImageLayout,
13495
0
        dst_image: vk::Image,
13496
0
        dst_image_layout: vk::ImageLayout,
13497
0
        region_count: u32,
13498
0
        p_regions: *const vk::ImageResolve,
13499
0
    ) {
13500
0
        let global = Self::instance();
13501
0
        // vkCmdResolveImage
13502
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13503
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13504
0
        let layer_result = device_info
13505
0
            .customized_info
13506
0
            .borrow()
13507
0
            .hooks()
13508
0
            .cmd_resolve_image(
13509
0
                command_buffer,
13510
0
                src_image,
13511
0
                src_image_layout,
13512
0
                dst_image,
13513
0
                dst_image_layout,
13514
0
                unsafe { slice_from_raw_parts(p_regions, region_count) },
13515
0
            );
13516
0
        match layer_result {
13517
0
            LayerResult::Handled(res) => res,
13518
            LayerResult::Unhandled => unsafe {
13519
0
                (dispatch_table.cmd_resolve_image)(
13520
0
                    command_buffer,
13521
0
                    src_image,
13522
0
                    src_image_layout,
13523
0
                    dst_image,
13524
0
                    dst_image_layout,
13525
0
                    region_count,
13526
0
                    p_regions,
13527
0
                )
13528
            },
13529
        }
13530
0
    }
13531
0
    extern "system" fn cmd_set_event(
13532
0
        command_buffer: vk::CommandBuffer,
13533
0
        event: vk::Event,
13534
0
        stage_mask: vk::PipelineStageFlags,
13535
0
    ) {
13536
0
        let global = Self::instance();
13537
0
        // vkCmdSetEvent
13538
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13539
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13540
0
        let layer_result = device_info.customized_info.borrow().hooks().cmd_set_event(
13541
0
            command_buffer,
13542
0
            event,
13543
0
            stage_mask,
13544
0
        );
13545
0
        match layer_result {
13546
0
            LayerResult::Handled(res) => res,
13547
            LayerResult::Unhandled => unsafe {
13548
0
                (dispatch_table.cmd_set_event)(command_buffer, event, stage_mask)
13549
            },
13550
        }
13551
0
    }
13552
0
    extern "system" fn cmd_reset_event(
13553
0
        command_buffer: vk::CommandBuffer,
13554
0
        event: vk::Event,
13555
0
        stage_mask: vk::PipelineStageFlags,
13556
0
    ) {
13557
0
        let global = Self::instance();
13558
0
        // vkCmdResetEvent
13559
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13560
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13561
0
        let layer_result = device_info
13562
0
            .customized_info
13563
0
            .borrow()
13564
0
            .hooks()
13565
0
            .cmd_reset_event(command_buffer, event, stage_mask);
13566
0
        match layer_result {
13567
0
            LayerResult::Handled(res) => res,
13568
            LayerResult::Unhandled => unsafe {
13569
0
                (dispatch_table.cmd_reset_event)(command_buffer, event, stage_mask)
13570
            },
13571
        }
13572
0
    }
13573
0
    extern "system" fn cmd_wait_events(
13574
0
        command_buffer: vk::CommandBuffer,
13575
0
        event_count: u32,
13576
0
        p_events: *const vk::Event,
13577
0
        src_stage_mask: vk::PipelineStageFlags,
13578
0
        dst_stage_mask: vk::PipelineStageFlags,
13579
0
        memory_barrier_count: u32,
13580
0
        p_memory_barriers: *const vk::MemoryBarrier,
13581
0
        buffer_memory_barrier_count: u32,
13582
0
        p_buffer_memory_barriers: *const vk::BufferMemoryBarrier,
13583
0
        image_memory_barrier_count: u32,
13584
0
        p_image_memory_barriers: *const vk::ImageMemoryBarrier,
13585
0
    ) {
13586
0
        let global = Self::instance();
13587
0
        // vkCmdWaitEvents
13588
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13589
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13590
0
        let layer_result = device_info
13591
0
            .customized_info
13592
0
            .borrow()
13593
0
            .hooks()
13594
0
            .cmd_wait_events(
13595
0
                command_buffer,
13596
0
                unsafe { slice_from_raw_parts(p_events, event_count) },
13597
0
                src_stage_mask,
13598
0
                dst_stage_mask,
13599
0
                unsafe { slice_from_raw_parts(p_memory_barriers, memory_barrier_count) },
13600
0
                unsafe {
13601
0
                    slice_from_raw_parts(p_buffer_memory_barriers, buffer_memory_barrier_count)
13602
0
                },
13603
0
                unsafe {
13604
0
                    slice_from_raw_parts(p_image_memory_barriers, image_memory_barrier_count)
13605
0
                },
13606
0
            );
13607
0
        match layer_result {
13608
0
            LayerResult::Handled(res) => res,
13609
            LayerResult::Unhandled => unsafe {
13610
0
                (dispatch_table.cmd_wait_events)(
13611
0
                    command_buffer,
13612
0
                    event_count,
13613
0
                    p_events,
13614
0
                    src_stage_mask,
13615
0
                    dst_stage_mask,
13616
0
                    memory_barrier_count,
13617
0
                    p_memory_barriers,
13618
0
                    buffer_memory_barrier_count,
13619
0
                    p_buffer_memory_barriers,
13620
0
                    image_memory_barrier_count,
13621
0
                    p_image_memory_barriers,
13622
0
                )
13623
            },
13624
        }
13625
0
    }
13626
0
    extern "system" fn cmd_pipeline_barrier(
13627
0
        command_buffer: vk::CommandBuffer,
13628
0
        src_stage_mask: vk::PipelineStageFlags,
13629
0
        dst_stage_mask: vk::PipelineStageFlags,
13630
0
        dependency_flags: vk::DependencyFlags,
13631
0
        memory_barrier_count: u32,
13632
0
        p_memory_barriers: *const vk::MemoryBarrier,
13633
0
        buffer_memory_barrier_count: u32,
13634
0
        p_buffer_memory_barriers: *const vk::BufferMemoryBarrier,
13635
0
        image_memory_barrier_count: u32,
13636
0
        p_image_memory_barriers: *const vk::ImageMemoryBarrier,
13637
0
    ) {
13638
0
        let global = Self::instance();
13639
0
        // vkCmdPipelineBarrier
13640
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13641
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13642
0
        let layer_result = device_info
13643
0
            .customized_info
13644
0
            .borrow()
13645
0
            .hooks()
13646
0
            .cmd_pipeline_barrier(
13647
0
                command_buffer,
13648
0
                src_stage_mask,
13649
0
                dst_stage_mask,
13650
0
                dependency_flags,
13651
0
                unsafe { slice_from_raw_parts(p_memory_barriers, memory_barrier_count) },
13652
0
                unsafe {
13653
0
                    slice_from_raw_parts(p_buffer_memory_barriers, buffer_memory_barrier_count)
13654
0
                },
13655
0
                unsafe {
13656
0
                    slice_from_raw_parts(p_image_memory_barriers, image_memory_barrier_count)
13657
0
                },
13658
0
            );
13659
0
        match layer_result {
13660
0
            LayerResult::Handled(res) => res,
13661
            LayerResult::Unhandled => unsafe {
13662
0
                (dispatch_table.cmd_pipeline_barrier)(
13663
0
                    command_buffer,
13664
0
                    src_stage_mask,
13665
0
                    dst_stage_mask,
13666
0
                    dependency_flags,
13667
0
                    memory_barrier_count,
13668
0
                    p_memory_barriers,
13669
0
                    buffer_memory_barrier_count,
13670
0
                    p_buffer_memory_barriers,
13671
0
                    image_memory_barrier_count,
13672
0
                    p_image_memory_barriers,
13673
0
                )
13674
            },
13675
        }
13676
0
    }
13677
0
    extern "system" fn cmd_begin_query(
13678
0
        command_buffer: vk::CommandBuffer,
13679
0
        query_pool: vk::QueryPool,
13680
0
        query: u32,
13681
0
        flags: vk::QueryControlFlags,
13682
0
    ) {
13683
0
        let global = Self::instance();
13684
0
        // vkCmdBeginQuery
13685
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13686
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13687
0
        let layer_result = device_info
13688
0
            .customized_info
13689
0
            .borrow()
13690
0
            .hooks()
13691
0
            .cmd_begin_query(command_buffer, query_pool, query, flags);
13692
0
        match layer_result {
13693
0
            LayerResult::Handled(res) => res,
13694
            LayerResult::Unhandled => unsafe {
13695
0
                (dispatch_table.cmd_begin_query)(command_buffer, query_pool, query, flags)
13696
            },
13697
        }
13698
0
    }
13699
0
    extern "system" fn cmd_end_query(
13700
0
        command_buffer: vk::CommandBuffer,
13701
0
        query_pool: vk::QueryPool,
13702
0
        query: u32,
13703
0
    ) {
13704
0
        let global = Self::instance();
13705
0
        // vkCmdEndQuery
13706
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13707
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13708
0
        let layer_result = device_info.customized_info.borrow().hooks().cmd_end_query(
13709
0
            command_buffer,
13710
0
            query_pool,
13711
0
            query,
13712
0
        );
13713
0
        match layer_result {
13714
0
            LayerResult::Handled(res) => res,
13715
            LayerResult::Unhandled => unsafe {
13716
0
                (dispatch_table.cmd_end_query)(command_buffer, query_pool, query)
13717
            },
13718
        }
13719
0
    }
13720
0
    extern "system" fn cmd_reset_query_pool(
13721
0
        command_buffer: vk::CommandBuffer,
13722
0
        query_pool: vk::QueryPool,
13723
0
        first_query: u32,
13724
0
        query_count: u32,
13725
0
    ) {
13726
0
        let global = Self::instance();
13727
0
        // vkCmdResetQueryPool
13728
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13729
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13730
0
        let layer_result = device_info
13731
0
            .customized_info
13732
0
            .borrow()
13733
0
            .hooks()
13734
0
            .cmd_reset_query_pool(command_buffer, query_pool, first_query, query_count);
13735
0
        match layer_result {
13736
0
            LayerResult::Handled(res) => res,
13737
            LayerResult::Unhandled => unsafe {
13738
0
                (dispatch_table.cmd_reset_query_pool)(
13739
0
                    command_buffer,
13740
0
                    query_pool,
13741
0
                    first_query,
13742
0
                    query_count,
13743
0
                )
13744
            },
13745
        }
13746
0
    }
13747
0
    extern "system" fn cmd_write_timestamp(
13748
0
        command_buffer: vk::CommandBuffer,
13749
0
        pipeline_stage: vk::PipelineStageFlags,
13750
0
        query_pool: vk::QueryPool,
13751
0
        query: u32,
13752
0
    ) {
13753
0
        let global = Self::instance();
13754
0
        // vkCmdWriteTimestamp
13755
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13756
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13757
0
        let layer_result = device_info
13758
0
            .customized_info
13759
0
            .borrow()
13760
0
            .hooks()
13761
0
            .cmd_write_timestamp(command_buffer, pipeline_stage, query_pool, query);
13762
0
        match layer_result {
13763
0
            LayerResult::Handled(res) => res,
13764
            LayerResult::Unhandled => unsafe {
13765
0
                (dispatch_table.cmd_write_timestamp)(
13766
0
                    command_buffer,
13767
0
                    pipeline_stage,
13768
0
                    query_pool,
13769
0
                    query,
13770
0
                )
13771
            },
13772
        }
13773
0
    }
13774
0
    extern "system" fn cmd_copy_query_pool_results(
13775
0
        command_buffer: vk::CommandBuffer,
13776
0
        query_pool: vk::QueryPool,
13777
0
        first_query: u32,
13778
0
        query_count: u32,
13779
0
        dst_buffer: vk::Buffer,
13780
0
        dst_offset: vk::DeviceSize,
13781
0
        stride: vk::DeviceSize,
13782
0
        flags: vk::QueryResultFlags,
13783
0
    ) {
13784
0
        let global = Self::instance();
13785
0
        // vkCmdCopyQueryPoolResults
13786
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13787
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13788
0
        let layer_result = device_info
13789
0
            .customized_info
13790
0
            .borrow()
13791
0
            .hooks()
13792
0
            .cmd_copy_query_pool_results(
13793
0
                command_buffer,
13794
0
                query_pool,
13795
0
                first_query,
13796
0
                query_count,
13797
0
                dst_buffer,
13798
0
                dst_offset,
13799
0
                stride,
13800
0
                flags,
13801
0
            );
13802
0
        match layer_result {
13803
0
            LayerResult::Handled(res) => res,
13804
            LayerResult::Unhandled => unsafe {
13805
0
                (dispatch_table.cmd_copy_query_pool_results)(
13806
0
                    command_buffer,
13807
0
                    query_pool,
13808
0
                    first_query,
13809
0
                    query_count,
13810
0
                    dst_buffer,
13811
0
                    dst_offset,
13812
0
                    stride,
13813
0
                    flags,
13814
0
                )
13815
            },
13816
        }
13817
0
    }
13818
0
    extern "system" fn cmd_push_constants(
13819
0
        command_buffer: vk::CommandBuffer,
13820
0
        layout: vk::PipelineLayout,
13821
0
        stage_flags: vk::ShaderStageFlags,
13822
0
        offset: u32,
13823
0
        size: u32,
13824
0
        p_values: *const c_void,
13825
0
    ) {
13826
0
        let global = Self::instance();
13827
0
        // vkCmdPushConstants
13828
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13829
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13830
0
        let layer_result = device_info
13831
0
            .customized_info
13832
0
            .borrow()
13833
0
            .hooks()
13834
0
            .cmd_push_constants(command_buffer, layout, stage_flags, offset, unsafe {
13835
0
                slice_from_raw_parts(p_values as *const u8, size)
13836
0
            });
13837
0
        match layer_result {
13838
0
            LayerResult::Handled(res) => res,
13839
            LayerResult::Unhandled => unsafe {
13840
0
                (dispatch_table.cmd_push_constants)(
13841
0
                    command_buffer,
13842
0
                    layout,
13843
0
                    stage_flags,
13844
0
                    offset,
13845
0
                    size,
13846
0
                    p_values,
13847
0
                )
13848
            },
13849
        }
13850
0
    }
13851
0
    extern "system" fn cmd_begin_render_pass(
13852
0
        command_buffer: vk::CommandBuffer,
13853
0
        p_render_pass_begin: *const vk::RenderPassBeginInfo,
13854
0
        contents: vk::SubpassContents,
13855
0
    ) {
13856
0
        let global = Self::instance();
13857
0
        // vkCmdBeginRenderPass
13858
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13859
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13860
0
        let layer_result = device_info
13861
0
            .customized_info
13862
0
            .borrow()
13863
0
            .hooks()
13864
0
            .cmd_begin_render_pass(
13865
0
                command_buffer,
13866
0
                unsafe { p_render_pass_begin.as_ref() }.unwrap(),
13867
0
                contents,
13868
0
            );
13869
0
        match layer_result {
13870
0
            LayerResult::Handled(res) => res,
13871
            LayerResult::Unhandled => unsafe {
13872
0
                (dispatch_table.cmd_begin_render_pass)(
13873
0
                    command_buffer,
13874
0
                    p_render_pass_begin,
13875
0
                    contents,
13876
0
                )
13877
            },
13878
        }
13879
0
    }
13880
0
    extern "system" fn cmd_next_subpass(
13881
0
        command_buffer: vk::CommandBuffer,
13882
0
        contents: vk::SubpassContents,
13883
0
    ) {
13884
0
        let global = Self::instance();
13885
0
        // vkCmdNextSubpass
13886
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13887
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13888
0
        let layer_result = device_info
13889
0
            .customized_info
13890
0
            .borrow()
13891
0
            .hooks()
13892
0
            .cmd_next_subpass(command_buffer, contents);
13893
0
        match layer_result {
13894
0
            LayerResult::Handled(res) => res,
13895
            LayerResult::Unhandled => unsafe {
13896
0
                (dispatch_table.cmd_next_subpass)(command_buffer, contents)
13897
            },
13898
        }
13899
0
    }
13900
0
    extern "system" fn cmd_end_render_pass(command_buffer: vk::CommandBuffer) {
13901
0
        let global = Self::instance();
13902
0
        // vkCmdEndRenderPass
13903
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13904
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13905
0
        let layer_result = device_info
13906
0
            .customized_info
13907
0
            .borrow()
13908
0
            .hooks()
13909
0
            .cmd_end_render_pass(command_buffer);
13910
0
        match layer_result {
13911
0
            LayerResult::Handled(res) => res,
13912
            LayerResult::Unhandled => unsafe {
13913
0
                (dispatch_table.cmd_end_render_pass)(command_buffer)
13914
            },
13915
        }
13916
0
    }
13917
0
    extern "system" fn cmd_execute_commands(
13918
0
        command_buffer: vk::CommandBuffer,
13919
0
        command_buffer_count: u32,
13920
0
        p_command_buffers: *const vk::CommandBuffer,
13921
0
    ) {
13922
0
        let global = Self::instance();
13923
0
        // vkCmdExecuteCommands
13924
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13925
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13926
0
        let layer_result = device_info
13927
0
            .customized_info
13928
0
            .borrow()
13929
0
            .hooks()
13930
0
            .cmd_execute_commands(command_buffer, unsafe {
13931
0
                slice_from_raw_parts(p_command_buffers, command_buffer_count)
13932
0
            });
13933
0
        match layer_result {
13934
0
            LayerResult::Handled(res) => res,
13935
            LayerResult::Unhandled => unsafe {
13936
0
                (dispatch_table.cmd_execute_commands)(
13937
0
                    command_buffer,
13938
0
                    command_buffer_count,
13939
0
                    p_command_buffers,
13940
0
                )
13941
            },
13942
        }
13943
0
    }
13944
0
    extern "system" fn bind_buffer_memory2(
13945
0
        device: vk::Device,
13946
0
        bind_info_count: u32,
13947
0
        p_bind_infos: *const vk::BindBufferMemoryInfo,
13948
0
    ) -> vk::Result {
13949
0
        let global = Self::instance();
13950
0
        // vkBindBufferMemory2
13951
0
        let device_info = global.get_device_info(device).unwrap();
13952
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
13953
0
        let layer_result = device_info
13954
0
            .customized_info
13955
0
            .borrow()
13956
0
            .hooks()
13957
0
            .bind_buffer_memory2(unsafe { slice_from_raw_parts(p_bind_infos, bind_info_count) });
13958
0
        match layer_result {
13959
0
            LayerResult::Handled(res) => match res {
13960
0
                Ok(()) => vk::Result::SUCCESS,
13961
0
                Err(e) => e,
13962
            },
13963
            LayerResult::Unhandled => unsafe {
13964
0
                (dispatch_table.bind_buffer_memory2)(device, bind_info_count, p_bind_infos)
13965
            },
13966
        }
13967
0
    }
13968
0
    extern "system" fn bind_image_memory2(
13969
0
        device: vk::Device,
13970
0
        bind_info_count: u32,
13971
0
        p_bind_infos: *const vk::BindImageMemoryInfo,
13972
0
    ) -> vk::Result {
13973
0
        let global = Self::instance();
13974
0
        // vkBindImageMemory2
13975
0
        let device_info = global.get_device_info(device).unwrap();
13976
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
13977
0
        let layer_result = device_info
13978
0
            .customized_info
13979
0
            .borrow()
13980
0
            .hooks()
13981
0
            .bind_image_memory2(unsafe { slice_from_raw_parts(p_bind_infos, bind_info_count) });
13982
0
        match layer_result {
13983
0
            LayerResult::Handled(res) => match res {
13984
0
                Ok(()) => vk::Result::SUCCESS,
13985
0
                Err(e) => e,
13986
            },
13987
            LayerResult::Unhandled => unsafe {
13988
0
                (dispatch_table.bind_image_memory2)(device, bind_info_count, p_bind_infos)
13989
            },
13990
        }
13991
0
    }
13992
0
    extern "system" fn get_device_group_peer_memory_features(
13993
0
        device: vk::Device,
13994
0
        heap_index: u32,
13995
0
        local_device_index: u32,
13996
0
        remote_device_index: u32,
13997
0
        p_peer_memory_features: *mut vk::PeerMemoryFeatureFlags,
13998
0
    ) {
13999
0
        let global = Self::instance();
14000
0
        // vkGetDeviceGroupPeerMemoryFeatures
14001
0
        let device_info = global.get_device_info(device).unwrap();
14002
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14003
0
        let layer_result = device_info
14004
0
            .customized_info
14005
0
            .borrow()
14006
0
            .hooks()
14007
0
            .get_device_group_peer_memory_features(
14008
0
                heap_index,
14009
0
                local_device_index,
14010
0
                remote_device_index,
14011
0
            );
14012
0
        match layer_result {
14013
0
            LayerResult::Handled(res) => {
14014
0
                *unsafe { p_peer_memory_features.as_mut() }.unwrap() = res;
14015
0
            }
14016
            LayerResult::Unhandled => unsafe {
14017
0
                (dispatch_table.get_device_group_peer_memory_features)(
14018
0
                    device,
14019
0
                    heap_index,
14020
0
                    local_device_index,
14021
0
                    remote_device_index,
14022
0
                    p_peer_memory_features,
14023
0
                )
14024
            },
14025
        }
14026
0
    }
14027
0
    extern "system" fn cmd_set_device_mask(command_buffer: vk::CommandBuffer, device_mask: u32) {
14028
0
        let global = Self::instance();
14029
0
        // vkCmdSetDeviceMask
14030
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14031
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14032
0
        let layer_result = device_info
14033
0
            .customized_info
14034
0
            .borrow()
14035
0
            .hooks()
14036
0
            .cmd_set_device_mask(command_buffer, device_mask);
14037
0
        match layer_result {
14038
0
            LayerResult::Handled(res) => res,
14039
            LayerResult::Unhandled => unsafe {
14040
0
                (dispatch_table.cmd_set_device_mask)(command_buffer, device_mask)
14041
            },
14042
        }
14043
0
    }
14044
0
    extern "system" fn cmd_dispatch_base(
14045
0
        command_buffer: vk::CommandBuffer,
14046
0
        base_groupx: u32,
14047
0
        base_groupy: u32,
14048
0
        base_groupz: u32,
14049
0
        group_countx: u32,
14050
0
        group_county: u32,
14051
0
        group_countz: u32,
14052
0
    ) {
14053
0
        let global = Self::instance();
14054
0
        // vkCmdDispatchBase
14055
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14056
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14057
0
        let layer_result = device_info
14058
0
            .customized_info
14059
0
            .borrow()
14060
0
            .hooks()
14061
0
            .cmd_dispatch_base(
14062
0
                command_buffer,
14063
0
                base_groupx,
14064
0
                base_groupy,
14065
0
                base_groupz,
14066
0
                group_countx,
14067
0
                group_county,
14068
0
                group_countz,
14069
0
            );
14070
0
        match layer_result {
14071
0
            LayerResult::Handled(res) => res,
14072
            LayerResult::Unhandled => unsafe {
14073
0
                (dispatch_table.cmd_dispatch_base)(
14074
0
                    command_buffer,
14075
0
                    base_groupx,
14076
0
                    base_groupy,
14077
0
                    base_groupz,
14078
0
                    group_countx,
14079
0
                    group_county,
14080
0
                    group_countz,
14081
0
                )
14082
            },
14083
        }
14084
0
    }
14085
0
    extern "system" fn get_image_memory_requirements2(
14086
0
        device: vk::Device,
14087
0
        p_info: *const vk::ImageMemoryRequirementsInfo2,
14088
0
        p_memory_requirements: *mut vk::MemoryRequirements2,
14089
0
    ) {
14090
0
        let global = Self::instance();
14091
0
        // vkGetImageMemoryRequirements2
14092
0
        let device_info = global.get_device_info(device).unwrap();
14093
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14094
0
        let layer_result = device_info
14095
0
            .customized_info
14096
0
            .borrow()
14097
0
            .hooks()
14098
0
            .get_image_memory_requirements2(
14099
0
                unsafe { p_info.as_ref() }.unwrap(),
14100
0
                unsafe { ptr_as_uninit_mut(p_memory_requirements) }.unwrap(),
14101
0
            );
14102
0
        match layer_result {
14103
0
            LayerResult::Handled(res) => res,
14104
            LayerResult::Unhandled => unsafe {
14105
0
                (dispatch_table.get_image_memory_requirements2)(
14106
0
                    device,
14107
0
                    p_info,
14108
0
                    p_memory_requirements,
14109
0
                )
14110
            },
14111
        }
14112
0
    }
14113
0
    extern "system" fn get_buffer_memory_requirements2(
14114
0
        device: vk::Device,
14115
0
        p_info: *const vk::BufferMemoryRequirementsInfo2,
14116
0
        p_memory_requirements: *mut vk::MemoryRequirements2,
14117
0
    ) {
14118
0
        let global = Self::instance();
14119
0
        // vkGetBufferMemoryRequirements2
14120
0
        let device_info = global.get_device_info(device).unwrap();
14121
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14122
0
        let layer_result = device_info
14123
0
            .customized_info
14124
0
            .borrow()
14125
0
            .hooks()
14126
0
            .get_buffer_memory_requirements2(
14127
0
                unsafe { p_info.as_ref() }.unwrap(),
14128
0
                unsafe { ptr_as_uninit_mut(p_memory_requirements) }.unwrap(),
14129
0
            );
14130
0
        match layer_result {
14131
0
            LayerResult::Handled(res) => res,
14132
            LayerResult::Unhandled => unsafe {
14133
0
                (dispatch_table.get_buffer_memory_requirements2)(
14134
0
                    device,
14135
0
                    p_info,
14136
0
                    p_memory_requirements,
14137
0
                )
14138
            },
14139
        }
14140
0
    }
14141
0
    extern "system" fn get_image_sparse_memory_requirements2(
14142
0
        device: vk::Device,
14143
0
        p_info: *const vk::ImageSparseMemoryRequirementsInfo2,
14144
0
        p_sparse_memory_requirement_count: *mut u32,
14145
0
        p_sparse_memory_requirements: *mut vk::SparseImageMemoryRequirements2,
14146
0
    ) {
14147
0
        let global = Self::instance();
14148
0
        // vkGetImageSparseMemoryRequirements2
14149
0
        let device_info = global.get_device_info(device).unwrap();
14150
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14151
0
        let layer_result = device_info
14152
0
            .customized_info
14153
0
            .borrow()
14154
0
            .hooks()
14155
0
            .get_image_sparse_memory_requirements2(
14156
0
                unsafe { p_info.as_ref() }.unwrap(),
14157
0
                unsafe { ptr_as_uninit_mut(p_sparse_memory_requirement_count) }.unwrap(),
14158
0
                unsafe {
14159
0
                    maybe_uninit_slice_from_raw_parts_mut(
14160
0
                        p_sparse_memory_requirements,
14161
0
                        p_sparse_memory_requirement_count,
14162
0
                    )
14163
0
                },
14164
0
            );
14165
0
        match layer_result {
14166
0
            LayerResult::Handled(res) => res,
14167
            LayerResult::Unhandled => unsafe {
14168
0
                (dispatch_table.get_image_sparse_memory_requirements2)(
14169
0
                    device,
14170
0
                    p_info,
14171
0
                    p_sparse_memory_requirement_count,
14172
0
                    p_sparse_memory_requirements,
14173
0
                )
14174
            },
14175
        }
14176
0
    }
14177
0
    extern "system" fn trim_command_pool(
14178
0
        device: vk::Device,
14179
0
        command_pool: vk::CommandPool,
14180
0
        flags: vk::CommandPoolTrimFlags,
14181
0
    ) {
14182
0
        let global = Self::instance();
14183
0
        // vkTrimCommandPool
14184
0
        let device_info = global.get_device_info(device).unwrap();
14185
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14186
0
        let layer_result = device_info
14187
0
            .customized_info
14188
0
            .borrow()
14189
0
            .hooks()
14190
0
            .trim_command_pool(command_pool, flags);
14191
0
        match layer_result {
14192
0
            LayerResult::Handled(res) => res,
14193
            LayerResult::Unhandled => unsafe {
14194
0
                (dispatch_table.trim_command_pool)(device, command_pool, flags)
14195
            },
14196
        }
14197
0
    }
14198
0
    extern "system" fn get_device_queue2(
14199
0
        device: vk::Device,
14200
0
        p_queue_info: *const vk::DeviceQueueInfo2,
14201
0
        p_queue: *mut vk::Queue,
14202
0
    ) {
14203
0
        let global = Self::instance();
14204
0
        // vkGetDeviceQueue2
14205
0
        let device_info = global.get_device_info(device).unwrap();
14206
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14207
0
        let layer_result = device_info
14208
0
            .customized_info
14209
0
            .borrow()
14210
0
            .hooks()
14211
0
            .get_device_queue2(unsafe { p_queue_info.as_ref() }.unwrap());
14212
0
        match layer_result {
14213
0
            LayerResult::Handled(res) => {
14214
0
                *unsafe { p_queue.as_mut() }.unwrap() = res;
14215
0
            }
14216
            LayerResult::Unhandled => unsafe {
14217
0
                (dispatch_table.get_device_queue2)(device, p_queue_info, p_queue)
14218
            },
14219
        }
14220
0
    }
14221
0
    extern "system" fn create_sampler_ycbcr_conversion(
14222
0
        device: vk::Device,
14223
0
        p_create_info: *const vk::SamplerYcbcrConversionCreateInfo,
14224
0
        p_allocator: *const vk::AllocationCallbacks,
14225
0
        p_ycbcr_conversion: *mut vk::SamplerYcbcrConversion,
14226
0
    ) -> vk::Result {
14227
0
        let global = Self::instance();
14228
0
        // vkCreateSamplerYcbcrConversion
14229
0
        let device_info = global.get_device_info(device).unwrap();
14230
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14231
0
        let layer_result = device_info
14232
0
            .customized_info
14233
0
            .borrow()
14234
0
            .hooks()
14235
0
            .create_sampler_ycbcr_conversion(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
14236
0
                p_allocator.as_ref()
14237
0
            });
14238
0
        match layer_result {
14239
0
            LayerResult::Handled(res) => match res {
14240
0
                Ok(res) => {
14241
0
                    *unsafe { p_ycbcr_conversion.as_mut() }.unwrap() = res;
14242
0
                    vk::Result::SUCCESS
14243
                }
14244
0
                Err(e) => e,
14245
            },
14246
            LayerResult::Unhandled => unsafe {
14247
0
                (dispatch_table.create_sampler_ycbcr_conversion)(
14248
0
                    device,
14249
0
                    p_create_info,
14250
0
                    p_allocator,
14251
0
                    p_ycbcr_conversion,
14252
0
                )
14253
            },
14254
        }
14255
0
    }
14256
1
    extern "system" fn destroy_sampler_ycbcr_conversion(
14257
1
        device: vk::Device,
14258
1
        ycbcr_conversion: vk::SamplerYcbcrConversion,
14259
1
        p_allocator: *const vk::AllocationCallbacks,
14260
1
    ) {
14261
1
        let global = Self::instance();
14262
1
        // vkDestroySamplerYcbcrConversion
14263
1
        let device_info = global.get_device_info(device).unwrap();
14264
1
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14265
1
        let layer_result = device_info
14266
1
            .customized_info
14267
1
            .borrow()
14268
1
            .hooks()
14269
1
            .destroy_sampler_ycbcr_conversion(ycbcr_conversion, unsafe { p_allocator.as_ref() });
14270
1
        match layer_result {
14271
0
            LayerResult::Handled(res) => res,
14272
            LayerResult::Unhandled => unsafe {
14273
1
                (dispatch_table.destroy_sampler_ycbcr_conversion)(
14274
1
                    device,
14275
1
                    ycbcr_conversion,
14276
1
                    p_allocator,
14277
1
                )
14278
            },
14279
        }
14280
1
    }
14281
0
    extern "system" fn create_descriptor_update_template(
14282
0
        device: vk::Device,
14283
0
        p_create_info: *const vk::DescriptorUpdateTemplateCreateInfo,
14284
0
        p_allocator: *const vk::AllocationCallbacks,
14285
0
        p_descriptor_update_template: *mut vk::DescriptorUpdateTemplate,
14286
0
    ) -> vk::Result {
14287
0
        let global = Self::instance();
14288
0
        // vkCreateDescriptorUpdateTemplate
14289
0
        let device_info = global.get_device_info(device).unwrap();
14290
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14291
0
        let layer_result = device_info
14292
0
            .customized_info
14293
0
            .borrow()
14294
0
            .hooks()
14295
0
            .create_descriptor_update_template(
14296
0
                unsafe { p_create_info.as_ref() }.unwrap(),
14297
0
                unsafe { p_allocator.as_ref() },
14298
0
            );
14299
0
        match layer_result {
14300
0
            LayerResult::Handled(res) => match res {
14301
0
                Ok(res) => {
14302
0
                    *unsafe { p_descriptor_update_template.as_mut() }.unwrap() = res;
14303
0
                    vk::Result::SUCCESS
14304
                }
14305
0
                Err(e) => e,
14306
            },
14307
            LayerResult::Unhandled => unsafe {
14308
0
                (dispatch_table.create_descriptor_update_template)(
14309
0
                    device,
14310
0
                    p_create_info,
14311
0
                    p_allocator,
14312
0
                    p_descriptor_update_template,
14313
0
                )
14314
            },
14315
        }
14316
0
    }
14317
0
    extern "system" fn destroy_descriptor_update_template(
14318
0
        device: vk::Device,
14319
0
        descriptor_update_template: vk::DescriptorUpdateTemplate,
14320
0
        p_allocator: *const vk::AllocationCallbacks,
14321
0
    ) {
14322
0
        let global = Self::instance();
14323
0
        // vkDestroyDescriptorUpdateTemplate
14324
0
        let device_info = global.get_device_info(device).unwrap();
14325
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14326
0
        let layer_result = device_info
14327
0
            .customized_info
14328
0
            .borrow()
14329
0
            .hooks()
14330
0
            .destroy_descriptor_update_template(descriptor_update_template, unsafe {
14331
0
                p_allocator.as_ref()
14332
0
            });
14333
0
        match layer_result {
14334
0
            LayerResult::Handled(res) => res,
14335
            LayerResult::Unhandled => unsafe {
14336
0
                (dispatch_table.destroy_descriptor_update_template)(
14337
0
                    device,
14338
0
                    descriptor_update_template,
14339
0
                    p_allocator,
14340
0
                )
14341
            },
14342
        }
14343
0
    }
14344
0
    extern "system" fn update_descriptor_set_with_template(
14345
0
        device: vk::Device,
14346
0
        descriptor_set: vk::DescriptorSet,
14347
0
        descriptor_update_template: vk::DescriptorUpdateTemplate,
14348
0
        p_data: *const c_void,
14349
0
    ) {
14350
0
        let global = Self::instance();
14351
0
        // vkUpdateDescriptorSetWithTemplate
14352
0
        let device_info = global.get_device_info(device).unwrap();
14353
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14354
0
        let layer_result = device_info
14355
0
            .customized_info
14356
0
            .borrow()
14357
0
            .hooks()
14358
0
            .update_descriptor_set_with_template(
14359
0
                descriptor_set,
14360
0
                descriptor_update_template,
14361
0
                p_data,
14362
0
            );
14363
0
        match layer_result {
14364
0
            LayerResult::Handled(res) => res,
14365
            LayerResult::Unhandled => unsafe {
14366
0
                (dispatch_table.update_descriptor_set_with_template)(
14367
0
                    device,
14368
0
                    descriptor_set,
14369
0
                    descriptor_update_template,
14370
0
                    p_data,
14371
0
                )
14372
            },
14373
        }
14374
0
    }
14375
0
    extern "system" fn get_descriptor_set_layout_support(
14376
0
        device: vk::Device,
14377
0
        p_create_info: *const vk::DescriptorSetLayoutCreateInfo,
14378
0
        p_support: *mut vk::DescriptorSetLayoutSupport,
14379
0
    ) {
14380
0
        let global = Self::instance();
14381
0
        // vkGetDescriptorSetLayoutSupport
14382
0
        let device_info = global.get_device_info(device).unwrap();
14383
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14384
0
        let layer_result = device_info
14385
0
            .customized_info
14386
0
            .borrow()
14387
0
            .hooks()
14388
0
            .get_descriptor_set_layout_support(
14389
0
                unsafe { p_create_info.as_ref() }.unwrap(),
14390
0
                unsafe { ptr_as_uninit_mut(p_support) }.unwrap(),
14391
0
            );
14392
0
        match layer_result {
14393
0
            LayerResult::Handled(res) => res,
14394
            LayerResult::Unhandled => unsafe {
14395
0
                (dispatch_table.get_descriptor_set_layout_support)(device, p_create_info, p_support)
14396
            },
14397
        }
14398
0
    }
14399
0
    extern "system" fn cmd_draw_indirect_count(
14400
0
        command_buffer: vk::CommandBuffer,
14401
0
        buffer: vk::Buffer,
14402
0
        offset: vk::DeviceSize,
14403
0
        count_buffer: vk::Buffer,
14404
0
        count_buffer_offset: vk::DeviceSize,
14405
0
        max_draw_count: u32,
14406
0
        stride: u32,
14407
0
    ) {
14408
0
        let global = Self::instance();
14409
0
        // vkCmdDrawIndirectCount
14410
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14411
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14412
0
        let layer_result = device_info
14413
0
            .customized_info
14414
0
            .borrow()
14415
0
            .hooks()
14416
0
            .cmd_draw_indirect_count(
14417
0
                command_buffer,
14418
0
                buffer,
14419
0
                offset,
14420
0
                count_buffer,
14421
0
                count_buffer_offset,
14422
0
                max_draw_count,
14423
0
                stride,
14424
0
            );
14425
0
        match layer_result {
14426
0
            LayerResult::Handled(res) => res,
14427
            LayerResult::Unhandled => unsafe {
14428
0
                (dispatch_table.cmd_draw_indirect_count)(
14429
0
                    command_buffer,
14430
0
                    buffer,
14431
0
                    offset,
14432
0
                    count_buffer,
14433
0
                    count_buffer_offset,
14434
0
                    max_draw_count,
14435
0
                    stride,
14436
0
                )
14437
            },
14438
        }
14439
0
    }
14440
0
    extern "system" fn cmd_draw_indexed_indirect_count(
14441
0
        command_buffer: vk::CommandBuffer,
14442
0
        buffer: vk::Buffer,
14443
0
        offset: vk::DeviceSize,
14444
0
        count_buffer: vk::Buffer,
14445
0
        count_buffer_offset: vk::DeviceSize,
14446
0
        max_draw_count: u32,
14447
0
        stride: u32,
14448
0
    ) {
14449
0
        let global = Self::instance();
14450
0
        // vkCmdDrawIndexedIndirectCount
14451
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14452
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14453
0
        let layer_result = device_info
14454
0
            .customized_info
14455
0
            .borrow()
14456
0
            .hooks()
14457
0
            .cmd_draw_indexed_indirect_count(
14458
0
                command_buffer,
14459
0
                buffer,
14460
0
                offset,
14461
0
                count_buffer,
14462
0
                count_buffer_offset,
14463
0
                max_draw_count,
14464
0
                stride,
14465
0
            );
14466
0
        match layer_result {
14467
0
            LayerResult::Handled(res) => res,
14468
            LayerResult::Unhandled => unsafe {
14469
0
                (dispatch_table.cmd_draw_indexed_indirect_count)(
14470
0
                    command_buffer,
14471
0
                    buffer,
14472
0
                    offset,
14473
0
                    count_buffer,
14474
0
                    count_buffer_offset,
14475
0
                    max_draw_count,
14476
0
                    stride,
14477
0
                )
14478
            },
14479
        }
14480
0
    }
14481
0
    extern "system" fn create_render_pass2(
14482
0
        device: vk::Device,
14483
0
        p_create_info: *const vk::RenderPassCreateInfo2,
14484
0
        p_allocator: *const vk::AllocationCallbacks,
14485
0
        p_render_pass: *mut vk::RenderPass,
14486
0
    ) -> vk::Result {
14487
0
        let global = Self::instance();
14488
0
        // vkCreateRenderPass2
14489
0
        let device_info = global.get_device_info(device).unwrap();
14490
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14491
0
        let layer_result = device_info
14492
0
            .customized_info
14493
0
            .borrow()
14494
0
            .hooks()
14495
0
            .create_render_pass2(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
14496
0
                p_allocator.as_ref()
14497
0
            });
14498
0
        match layer_result {
14499
0
            LayerResult::Handled(res) => match res {
14500
0
                Ok(res) => {
14501
0
                    *unsafe { p_render_pass.as_mut() }.unwrap() = res;
14502
0
                    vk::Result::SUCCESS
14503
                }
14504
0
                Err(e) => e,
14505
            },
14506
            LayerResult::Unhandled => unsafe {
14507
0
                (dispatch_table.create_render_pass2)(
14508
0
                    device,
14509
0
                    p_create_info,
14510
0
                    p_allocator,
14511
0
                    p_render_pass,
14512
0
                )
14513
            },
14514
        }
14515
0
    }
14516
0
    extern "system" fn cmd_begin_render_pass2(
14517
0
        command_buffer: vk::CommandBuffer,
14518
0
        p_render_pass_begin: *const vk::RenderPassBeginInfo,
14519
0
        p_subpass_begin_info: *const vk::SubpassBeginInfo,
14520
0
    ) {
14521
0
        let global = Self::instance();
14522
0
        // vkCmdBeginRenderPass2
14523
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14524
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14525
0
        let layer_result = device_info
14526
0
            .customized_info
14527
0
            .borrow()
14528
0
            .hooks()
14529
0
            .cmd_begin_render_pass2(
14530
0
                command_buffer,
14531
0
                unsafe { p_render_pass_begin.as_ref() }.unwrap(),
14532
0
                unsafe { p_subpass_begin_info.as_ref() }.unwrap(),
14533
0
            );
14534
0
        match layer_result {
14535
0
            LayerResult::Handled(res) => res,
14536
            LayerResult::Unhandled => unsafe {
14537
0
                (dispatch_table.cmd_begin_render_pass2)(
14538
0
                    command_buffer,
14539
0
                    p_render_pass_begin,
14540
0
                    p_subpass_begin_info,
14541
0
                )
14542
            },
14543
        }
14544
0
    }
14545
0
    extern "system" fn cmd_next_subpass2(
14546
0
        command_buffer: vk::CommandBuffer,
14547
0
        p_subpass_begin_info: *const vk::SubpassBeginInfo,
14548
0
        p_subpass_end_info: *const vk::SubpassEndInfo,
14549
0
    ) {
14550
0
        let global = Self::instance();
14551
0
        // vkCmdNextSubpass2
14552
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14553
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14554
0
        let layer_result = device_info
14555
0
            .customized_info
14556
0
            .borrow()
14557
0
            .hooks()
14558
0
            .cmd_next_subpass2(
14559
0
                command_buffer,
14560
0
                unsafe { p_subpass_begin_info.as_ref() }.unwrap(),
14561
0
                unsafe { p_subpass_end_info.as_ref() }.unwrap(),
14562
0
            );
14563
0
        match layer_result {
14564
0
            LayerResult::Handled(res) => res,
14565
            LayerResult::Unhandled => unsafe {
14566
0
                (dispatch_table.cmd_next_subpass2)(
14567
0
                    command_buffer,
14568
0
                    p_subpass_begin_info,
14569
0
                    p_subpass_end_info,
14570
0
                )
14571
            },
14572
        }
14573
0
    }
14574
0
    extern "system" fn cmd_end_render_pass2(
14575
0
        command_buffer: vk::CommandBuffer,
14576
0
        p_subpass_end_info: *const vk::SubpassEndInfo,
14577
0
    ) {
14578
0
        let global = Self::instance();
14579
0
        // vkCmdEndRenderPass2
14580
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14581
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14582
0
        let layer_result = device_info
14583
0
            .customized_info
14584
0
            .borrow()
14585
0
            .hooks()
14586
0
            .cmd_end_render_pass2(
14587
0
                command_buffer,
14588
0
                unsafe { p_subpass_end_info.as_ref() }.unwrap(),
14589
0
            );
14590
0
        match layer_result {
14591
0
            LayerResult::Handled(res) => res,
14592
            LayerResult::Unhandled => unsafe {
14593
0
                (dispatch_table.cmd_end_render_pass2)(command_buffer, p_subpass_end_info)
14594
            },
14595
        }
14596
0
    }
14597
0
    extern "system" fn reset_query_pool(
14598
0
        device: vk::Device,
14599
0
        query_pool: vk::QueryPool,
14600
0
        first_query: u32,
14601
0
        query_count: u32,
14602
0
    ) {
14603
0
        let global = Self::instance();
14604
0
        // vkResetQueryPool
14605
0
        let device_info = global.get_device_info(device).unwrap();
14606
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14607
0
        let layer_result = device_info
14608
0
            .customized_info
14609
0
            .borrow()
14610
0
            .hooks()
14611
0
            .reset_query_pool(query_pool, first_query, query_count);
14612
0
        match layer_result {
14613
0
            LayerResult::Handled(res) => res,
14614
            LayerResult::Unhandled => unsafe {
14615
0
                (dispatch_table.reset_query_pool)(device, query_pool, first_query, query_count)
14616
            },
14617
        }
14618
0
    }
14619
0
    extern "system" fn get_semaphore_counter_value(
14620
0
        device: vk::Device,
14621
0
        semaphore: vk::Semaphore,
14622
0
        p_value: *mut u64,
14623
0
    ) -> vk::Result {
14624
0
        let global = Self::instance();
14625
0
        // vkGetSemaphoreCounterValue
14626
0
        let device_info = global.get_device_info(device).unwrap();
14627
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14628
0
        let layer_result = device_info
14629
0
            .customized_info
14630
0
            .borrow()
14631
0
            .hooks()
14632
0
            .get_semaphore_counter_value(semaphore);
14633
0
        match layer_result {
14634
0
            LayerResult::Handled(res) => match res {
14635
0
                Ok(res) => {
14636
0
                    *unsafe { p_value.as_mut() }.unwrap() = res;
14637
0
                    vk::Result::SUCCESS
14638
                }
14639
0
                Err(e) => e,
14640
            },
14641
            LayerResult::Unhandled => unsafe {
14642
0
                (dispatch_table.get_semaphore_counter_value)(device, semaphore, p_value)
14643
            },
14644
        }
14645
0
    }
14646
0
    extern "system" fn wait_semaphores(
14647
0
        device: vk::Device,
14648
0
        p_wait_info: *const vk::SemaphoreWaitInfo,
14649
0
        timeout: u64,
14650
0
    ) -> vk::Result {
14651
0
        let global = Self::instance();
14652
0
        // vkWaitSemaphores
14653
0
        let device_info = global.get_device_info(device).unwrap();
14654
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14655
0
        let layer_result = device_info
14656
0
            .customized_info
14657
0
            .borrow()
14658
0
            .hooks()
14659
0
            .wait_semaphores(unsafe { p_wait_info.as_ref() }.unwrap(), timeout);
14660
0
        match layer_result {
14661
0
            LayerResult::Handled(res) => match res {
14662
0
                Ok(()) => vk::Result::SUCCESS,
14663
0
                Err(e) => e,
14664
            },
14665
            LayerResult::Unhandled => unsafe {
14666
0
                (dispatch_table.wait_semaphores)(device, p_wait_info, timeout)
14667
            },
14668
        }
14669
0
    }
14670
0
    extern "system" fn signal_semaphore(
14671
0
        device: vk::Device,
14672
0
        p_signal_info: *const vk::SemaphoreSignalInfo,
14673
0
    ) -> vk::Result {
14674
0
        let global = Self::instance();
14675
0
        // vkSignalSemaphore
14676
0
        let device_info = global.get_device_info(device).unwrap();
14677
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14678
0
        let layer_result = device_info
14679
0
            .customized_info
14680
0
            .borrow()
14681
0
            .hooks()
14682
0
            .signal_semaphore(unsafe { p_signal_info.as_ref() }.unwrap());
14683
0
        match layer_result {
14684
0
            LayerResult::Handled(res) => match res {
14685
0
                Ok(()) => vk::Result::SUCCESS,
14686
0
                Err(e) => e,
14687
            },
14688
            LayerResult::Unhandled => unsafe {
14689
0
                (dispatch_table.signal_semaphore)(device, p_signal_info)
14690
            },
14691
        }
14692
0
    }
14693
0
    extern "system" fn get_buffer_device_address(
14694
0
        device: vk::Device,
14695
0
        p_info: *const vk::BufferDeviceAddressInfo,
14696
0
    ) -> vk::DeviceAddress {
14697
0
        let global = Self::instance();
14698
0
        // vkGetBufferDeviceAddress
14699
0
        let device_info = global.get_device_info(device).unwrap();
14700
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14701
0
        let layer_result = device_info
14702
0
            .customized_info
14703
0
            .borrow()
14704
0
            .hooks()
14705
0
            .get_buffer_device_address(unsafe { p_info.as_ref() }.unwrap());
14706
0
        match layer_result {
14707
0
            LayerResult::Handled(res) => res,
14708
            LayerResult::Unhandled => unsafe {
14709
0
                (dispatch_table.get_buffer_device_address)(device, p_info)
14710
            },
14711
        }
14712
0
    }
14713
0
    extern "system" fn get_buffer_opaque_capture_address(
14714
0
        device: vk::Device,
14715
0
        p_info: *const vk::BufferDeviceAddressInfo,
14716
0
    ) -> u64 {
14717
0
        let global = Self::instance();
14718
0
        // vkGetBufferOpaqueCaptureAddress
14719
0
        let device_info = global.get_device_info(device).unwrap();
14720
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14721
0
        let layer_result = device_info
14722
0
            .customized_info
14723
0
            .borrow()
14724
0
            .hooks()
14725
0
            .get_buffer_opaque_capture_address(unsafe { p_info.as_ref() }.unwrap());
14726
0
        match layer_result {
14727
0
            LayerResult::Handled(res) => res,
14728
            LayerResult::Unhandled => unsafe {
14729
0
                (dispatch_table.get_buffer_opaque_capture_address)(device, p_info)
14730
            },
14731
        }
14732
0
    }
14733
0
    extern "system" fn get_device_memory_opaque_capture_address(
14734
0
        device: vk::Device,
14735
0
        p_info: *const vk::DeviceMemoryOpaqueCaptureAddressInfo,
14736
0
    ) -> u64 {
14737
0
        let global = Self::instance();
14738
0
        // vkGetDeviceMemoryOpaqueCaptureAddress
14739
0
        let device_info = global.get_device_info(device).unwrap();
14740
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14741
0
        let layer_result = device_info
14742
0
            .customized_info
14743
0
            .borrow()
14744
0
            .hooks()
14745
0
            .get_device_memory_opaque_capture_address(unsafe { p_info.as_ref() }.unwrap());
14746
0
        match layer_result {
14747
0
            LayerResult::Handled(res) => res,
14748
            LayerResult::Unhandled => unsafe {
14749
0
                (dispatch_table.get_device_memory_opaque_capture_address)(device, p_info)
14750
            },
14751
        }
14752
0
    }
14753
0
    extern "system" fn create_private_data_slot(
14754
0
        device: vk::Device,
14755
0
        p_create_info: *const vk::PrivateDataSlotCreateInfo,
14756
0
        p_allocator: *const vk::AllocationCallbacks,
14757
0
        p_private_data_slot: *mut vk::PrivateDataSlot,
14758
0
    ) -> vk::Result {
14759
0
        let global = Self::instance();
14760
0
        // vkCreatePrivateDataSlot
14761
0
        let device_info = global.get_device_info(device).unwrap();
14762
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
14763
0
        let layer_result = device_info
14764
0
            .customized_info
14765
0
            .borrow()
14766
0
            .hooks()
14767
0
            .create_private_data_slot(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
14768
0
                p_allocator.as_ref()
14769
0
            });
14770
0
        match layer_result {
14771
0
            LayerResult::Handled(res) => match res {
14772
0
                Ok(res) => {
14773
0
                    *unsafe { p_private_data_slot.as_mut() }.unwrap() = res;
14774
0
                    vk::Result::SUCCESS
14775
                }
14776
0
                Err(e) => e,
14777
            },
14778
            LayerResult::Unhandled => unsafe {
14779
0
                (dispatch_table.create_private_data_slot)(
14780
0
                    device,
14781
0
                    p_create_info,
14782
0
                    p_allocator,
14783
0
                    p_private_data_slot,
14784
0
                )
14785
            },
14786
        }
14787
0
    }
14788
0
    extern "system" fn destroy_private_data_slot(
14789
0
        device: vk::Device,
14790
0
        private_data_slot: vk::PrivateDataSlot,
14791
0
        p_allocator: *const vk::AllocationCallbacks,
14792
0
    ) {
14793
0
        let global = Self::instance();
14794
0
        // vkDestroyPrivateDataSlot
14795
0
        let device_info = global.get_device_info(device).unwrap();
14796
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
14797
0
        let layer_result = device_info
14798
0
            .customized_info
14799
0
            .borrow()
14800
0
            .hooks()
14801
0
            .destroy_private_data_slot(private_data_slot, unsafe { p_allocator.as_ref() });
14802
0
        match layer_result {
14803
0
            LayerResult::Handled(res) => res,
14804
            LayerResult::Unhandled => unsafe {
14805
0
                (dispatch_table.destroy_private_data_slot)(device, private_data_slot, p_allocator)
14806
            },
14807
        }
14808
0
    }
14809
0
    extern "system" fn set_private_data(
14810
0
        device: vk::Device,
14811
0
        object_type: vk::ObjectType,
14812
0
        object_handle: u64,
14813
0
        private_data_slot: vk::PrivateDataSlot,
14814
0
        data: u64,
14815
0
    ) -> vk::Result {
14816
0
        let global = Self::instance();
14817
0
        // vkSetPrivateData
14818
0
        let device_info = global.get_device_info(device).unwrap();
14819
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
14820
0
        let layer_result = device_info
14821
0
            .customized_info
14822
0
            .borrow()
14823
0
            .hooks()
14824
0
            .set_private_data(object_type, object_handle, private_data_slot, data);
14825
0
        match layer_result {
14826
0
            LayerResult::Handled(res) => match res {
14827
0
                Ok(()) => vk::Result::SUCCESS,
14828
0
                Err(e) => e,
14829
            },
14830
            LayerResult::Unhandled => unsafe {
14831
0
                (dispatch_table.set_private_data)(
14832
0
                    device,
14833
0
                    object_type,
14834
0
                    object_handle,
14835
0
                    private_data_slot,
14836
0
                    data,
14837
0
                )
14838
            },
14839
        }
14840
0
    }
14841
0
    extern "system" fn get_private_data(
14842
0
        device: vk::Device,
14843
0
        object_type: vk::ObjectType,
14844
0
        object_handle: u64,
14845
0
        private_data_slot: vk::PrivateDataSlot,
14846
0
        p_data: *mut u64,
14847
0
    ) {
14848
0
        let global = Self::instance();
14849
0
        // vkGetPrivateData
14850
0
        let device_info = global.get_device_info(device).unwrap();
14851
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
14852
0
        let layer_result = device_info
14853
0
            .customized_info
14854
0
            .borrow()
14855
0
            .hooks()
14856
0
            .get_private_data(object_type, object_handle, private_data_slot);
14857
0
        match layer_result {
14858
0
            LayerResult::Handled(res) => {
14859
0
                *unsafe { p_data.as_mut() }.unwrap() = res;
14860
0
            }
14861
            LayerResult::Unhandled => unsafe {
14862
0
                (dispatch_table.get_private_data)(
14863
0
                    device,
14864
0
                    object_type,
14865
0
                    object_handle,
14866
0
                    private_data_slot,
14867
0
                    p_data,
14868
0
                )
14869
            },
14870
        }
14871
0
    }
14872
0
    extern "system" fn cmd_set_event2(
14873
0
        command_buffer: vk::CommandBuffer,
14874
0
        event: vk::Event,
14875
0
        p_dependency_info: *const vk::DependencyInfo,
14876
0
    ) {
14877
0
        let global = Self::instance();
14878
0
        // vkCmdSetEvent2
14879
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14880
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
14881
0
        let layer_result = device_info.customized_info.borrow().hooks().cmd_set_event2(
14882
0
            command_buffer,
14883
0
            event,
14884
0
            unsafe { p_dependency_info.as_ref() }.unwrap(),
14885
0
        );
14886
0
        match layer_result {
14887
0
            LayerResult::Handled(res) => res,
14888
            LayerResult::Unhandled => unsafe {
14889
0
                (dispatch_table.cmd_set_event2)(command_buffer, event, p_dependency_info)
14890
            },
14891
        }
14892
0
    }
14893
0
    extern "system" fn cmd_reset_event2(
14894
0
        command_buffer: vk::CommandBuffer,
14895
0
        event: vk::Event,
14896
0
        stage_mask: vk::PipelineStageFlags2,
14897
0
    ) {
14898
0
        let global = Self::instance();
14899
0
        // vkCmdResetEvent2
14900
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14901
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
14902
0
        let layer_result = device_info
14903
0
            .customized_info
14904
0
            .borrow()
14905
0
            .hooks()
14906
0
            .cmd_reset_event2(command_buffer, event, stage_mask);
14907
0
        match layer_result {
14908
0
            LayerResult::Handled(res) => res,
14909
            LayerResult::Unhandled => unsafe {
14910
0
                (dispatch_table.cmd_reset_event2)(command_buffer, event, stage_mask)
14911
            },
14912
        }
14913
0
    }
14914
0
    extern "system" fn cmd_wait_events2(
14915
0
        command_buffer: vk::CommandBuffer,
14916
0
        event_count: u32,
14917
0
        p_events: *const vk::Event,
14918
0
        p_dependency_infos: *const vk::DependencyInfo,
14919
0
    ) {
14920
0
        let global = Self::instance();
14921
0
        // vkCmdWaitEvents2
14922
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14923
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
14924
0
        let layer_result = device_info
14925
0
            .customized_info
14926
0
            .borrow()
14927
0
            .hooks()
14928
0
            .cmd_wait_events2(
14929
0
                command_buffer,
14930
0
                unsafe { slice_from_raw_parts(p_events, event_count) },
14931
0
                unsafe { slice_from_raw_parts(p_dependency_infos, event_count) },
14932
0
            );
14933
0
        match layer_result {
14934
0
            LayerResult::Handled(res) => res,
14935
            LayerResult::Unhandled => unsafe {
14936
0
                (dispatch_table.cmd_wait_events2)(
14937
0
                    command_buffer,
14938
0
                    event_count,
14939
0
                    p_events,
14940
0
                    p_dependency_infos,
14941
0
                )
14942
            },
14943
        }
14944
0
    }
14945
0
    extern "system" fn cmd_pipeline_barrier2(
14946
0
        command_buffer: vk::CommandBuffer,
14947
0
        p_dependency_info: *const vk::DependencyInfo,
14948
0
    ) {
14949
0
        let global = Self::instance();
14950
0
        // vkCmdPipelineBarrier2
14951
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14952
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
14953
0
        let layer_result = device_info
14954
0
            .customized_info
14955
0
            .borrow()
14956
0
            .hooks()
14957
0
            .cmd_pipeline_barrier2(
14958
0
                command_buffer,
14959
0
                unsafe { p_dependency_info.as_ref() }.unwrap(),
14960
0
            );
14961
0
        match layer_result {
14962
0
            LayerResult::Handled(res) => res,
14963
            LayerResult::Unhandled => unsafe {
14964
0
                (dispatch_table.cmd_pipeline_barrier2)(command_buffer, p_dependency_info)
14965
            },
14966
        }
14967
0
    }
14968
0
    extern "system" fn cmd_write_timestamp2(
14969
0
        command_buffer: vk::CommandBuffer,
14970
0
        stage: vk::PipelineStageFlags2,
14971
0
        query_pool: vk::QueryPool,
14972
0
        query: u32,
14973
0
    ) {
14974
0
        let global = Self::instance();
14975
0
        // vkCmdWriteTimestamp2
14976
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14977
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
14978
0
        let layer_result = device_info
14979
0
            .customized_info
14980
0
            .borrow()
14981
0
            .hooks()
14982
0
            .cmd_write_timestamp2(command_buffer, stage, query_pool, query);
14983
0
        match layer_result {
14984
0
            LayerResult::Handled(res) => res,
14985
            LayerResult::Unhandled => unsafe {
14986
0
                (dispatch_table.cmd_write_timestamp2)(command_buffer, stage, query_pool, query)
14987
            },
14988
        }
14989
0
    }
14990
0
    extern "system" fn queue_submit2(
14991
0
        queue: vk::Queue,
14992
0
        submit_count: u32,
14993
0
        p_submits: *const vk::SubmitInfo2,
14994
0
        fence: vk::Fence,
14995
0
    ) -> vk::Result {
14996
0
        let global = Self::instance();
14997
0
        // vkQueueSubmit2
14998
0
        let device_info = global.get_device_info(queue).unwrap();
14999
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15000
0
        let layer_result = device_info.customized_info.borrow().hooks().queue_submit2(
15001
0
            queue,
15002
0
            unsafe { slice_from_raw_parts(p_submits, submit_count) },
15003
0
            fence,
15004
0
        );
15005
0
        match layer_result {
15006
0
            LayerResult::Handled(res) => match res {
15007
0
                Ok(()) => vk::Result::SUCCESS,
15008
0
                Err(e) => e,
15009
            },
15010
            LayerResult::Unhandled => unsafe {
15011
0
                (dispatch_table.queue_submit2)(queue, submit_count, p_submits, fence)
15012
            },
15013
        }
15014
0
    }
15015
0
    extern "system" fn cmd_copy_buffer2(
15016
0
        command_buffer: vk::CommandBuffer,
15017
0
        p_copy_buffer_info: *const vk::CopyBufferInfo2,
15018
0
    ) {
15019
0
        let global = Self::instance();
15020
0
        // vkCmdCopyBuffer2
15021
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15022
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15023
0
        let layer_result = device_info
15024
0
            .customized_info
15025
0
            .borrow()
15026
0
            .hooks()
15027
0
            .cmd_copy_buffer2(
15028
0
                command_buffer,
15029
0
                unsafe { p_copy_buffer_info.as_ref() }.unwrap(),
15030
0
            );
15031
0
        match layer_result {
15032
0
            LayerResult::Handled(res) => res,
15033
            LayerResult::Unhandled => unsafe {
15034
0
                (dispatch_table.cmd_copy_buffer2)(command_buffer, p_copy_buffer_info)
15035
            },
15036
        }
15037
0
    }
15038
0
    extern "system" fn cmd_copy_image2(
15039
0
        command_buffer: vk::CommandBuffer,
15040
0
        p_copy_image_info: *const vk::CopyImageInfo2,
15041
0
    ) {
15042
0
        let global = Self::instance();
15043
0
        // vkCmdCopyImage2
15044
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15045
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15046
0
        let layer_result = device_info
15047
0
            .customized_info
15048
0
            .borrow()
15049
0
            .hooks()
15050
0
            .cmd_copy_image2(
15051
0
                command_buffer,
15052
0
                unsafe { p_copy_image_info.as_ref() }.unwrap(),
15053
0
            );
15054
0
        match layer_result {
15055
0
            LayerResult::Handled(res) => res,
15056
            LayerResult::Unhandled => unsafe {
15057
0
                (dispatch_table.cmd_copy_image2)(command_buffer, p_copy_image_info)
15058
            },
15059
        }
15060
0
    }
15061
0
    extern "system" fn cmd_copy_buffer_to_image2(
15062
0
        command_buffer: vk::CommandBuffer,
15063
0
        p_copy_buffer_to_image_info: *const vk::CopyBufferToImageInfo2,
15064
0
    ) {
15065
0
        let global = Self::instance();
15066
0
        // vkCmdCopyBufferToImage2
15067
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15068
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15069
0
        let layer_result = device_info
15070
0
            .customized_info
15071
0
            .borrow()
15072
0
            .hooks()
15073
0
            .cmd_copy_buffer_to_image2(
15074
0
                command_buffer,
15075
0
                unsafe { p_copy_buffer_to_image_info.as_ref() }.unwrap(),
15076
0
            );
15077
0
        match layer_result {
15078
0
            LayerResult::Handled(res) => res,
15079
            LayerResult::Unhandled => unsafe {
15080
0
                (dispatch_table.cmd_copy_buffer_to_image2)(
15081
0
                    command_buffer,
15082
0
                    p_copy_buffer_to_image_info,
15083
0
                )
15084
            },
15085
        }
15086
0
    }
15087
0
    extern "system" fn cmd_copy_image_to_buffer2(
15088
0
        command_buffer: vk::CommandBuffer,
15089
0
        p_copy_image_to_buffer_info: *const vk::CopyImageToBufferInfo2,
15090
0
    ) {
15091
0
        let global = Self::instance();
15092
0
        // vkCmdCopyImageToBuffer2
15093
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15094
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15095
0
        let layer_result = device_info
15096
0
            .customized_info
15097
0
            .borrow()
15098
0
            .hooks()
15099
0
            .cmd_copy_image_to_buffer2(
15100
0
                command_buffer,
15101
0
                unsafe { p_copy_image_to_buffer_info.as_ref() }.unwrap(),
15102
0
            );
15103
0
        match layer_result {
15104
0
            LayerResult::Handled(res) => res,
15105
            LayerResult::Unhandled => unsafe {
15106
0
                (dispatch_table.cmd_copy_image_to_buffer2)(
15107
0
                    command_buffer,
15108
0
                    p_copy_image_to_buffer_info,
15109
0
                )
15110
            },
15111
        }
15112
0
    }
15113
0
    extern "system" fn cmd_blit_image2(
15114
0
        command_buffer: vk::CommandBuffer,
15115
0
        p_blit_image_info: *const vk::BlitImageInfo2,
15116
0
    ) {
15117
0
        let global = Self::instance();
15118
0
        // vkCmdBlitImage2
15119
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15120
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15121
0
        let layer_result = device_info
15122
0
            .customized_info
15123
0
            .borrow()
15124
0
            .hooks()
15125
0
            .cmd_blit_image2(
15126
0
                command_buffer,
15127
0
                unsafe { p_blit_image_info.as_ref() }.unwrap(),
15128
0
            );
15129
0
        match layer_result {
15130
0
            LayerResult::Handled(res) => res,
15131
            LayerResult::Unhandled => unsafe {
15132
0
                (dispatch_table.cmd_blit_image2)(command_buffer, p_blit_image_info)
15133
            },
15134
        }
15135
0
    }
15136
0
    extern "system" fn cmd_resolve_image2(
15137
0
        command_buffer: vk::CommandBuffer,
15138
0
        p_resolve_image_info: *const vk::ResolveImageInfo2,
15139
0
    ) {
15140
0
        let global = Self::instance();
15141
0
        // vkCmdResolveImage2
15142
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15143
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15144
0
        let layer_result = device_info
15145
0
            .customized_info
15146
0
            .borrow()
15147
0
            .hooks()
15148
0
            .cmd_resolve_image2(
15149
0
                command_buffer,
15150
0
                unsafe { p_resolve_image_info.as_ref() }.unwrap(),
15151
0
            );
15152
0
        match layer_result {
15153
0
            LayerResult::Handled(res) => res,
15154
            LayerResult::Unhandled => unsafe {
15155
0
                (dispatch_table.cmd_resolve_image2)(command_buffer, p_resolve_image_info)
15156
            },
15157
        }
15158
0
    }
15159
0
    extern "system" fn cmd_begin_rendering(
15160
0
        command_buffer: vk::CommandBuffer,
15161
0
        p_rendering_info: *const vk::RenderingInfo,
15162
0
    ) {
15163
0
        let global = Self::instance();
15164
0
        // vkCmdBeginRendering
15165
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15166
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15167
0
        let layer_result = device_info
15168
0
            .customized_info
15169
0
            .borrow()
15170
0
            .hooks()
15171
0
            .cmd_begin_rendering(
15172
0
                command_buffer,
15173
0
                unsafe { p_rendering_info.as_ref() }.unwrap(),
15174
0
            );
15175
0
        match layer_result {
15176
0
            LayerResult::Handled(res) => res,
15177
            LayerResult::Unhandled => unsafe {
15178
0
                (dispatch_table.cmd_begin_rendering)(command_buffer, p_rendering_info)
15179
            },
15180
        }
15181
0
    }
15182
0
    extern "system" fn cmd_end_rendering(command_buffer: vk::CommandBuffer) {
15183
0
        let global = Self::instance();
15184
0
        // vkCmdEndRendering
15185
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15186
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15187
0
        let layer_result = device_info
15188
0
            .customized_info
15189
0
            .borrow()
15190
0
            .hooks()
15191
0
            .cmd_end_rendering(command_buffer);
15192
0
        match layer_result {
15193
0
            LayerResult::Handled(res) => res,
15194
0
            LayerResult::Unhandled => unsafe { (dispatch_table.cmd_end_rendering)(command_buffer) },
15195
        }
15196
0
    }
15197
0
    extern "system" fn cmd_set_cull_mode(
15198
0
        command_buffer: vk::CommandBuffer,
15199
0
        cull_mode: vk::CullModeFlags,
15200
0
    ) {
15201
0
        let global = Self::instance();
15202
0
        // vkCmdSetCullMode
15203
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15204
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15205
0
        let layer_result = device_info
15206
0
            .customized_info
15207
0
            .borrow()
15208
0
            .hooks()
15209
0
            .cmd_set_cull_mode(command_buffer, cull_mode);
15210
0
        match layer_result {
15211
0
            LayerResult::Handled(res) => res,
15212
            LayerResult::Unhandled => unsafe {
15213
0
                (dispatch_table.cmd_set_cull_mode)(command_buffer, cull_mode)
15214
            },
15215
        }
15216
0
    }
15217
0
    extern "system" fn cmd_set_front_face(
15218
0
        command_buffer: vk::CommandBuffer,
15219
0
        front_face: vk::FrontFace,
15220
0
    ) {
15221
0
        let global = Self::instance();
15222
0
        // vkCmdSetFrontFace
15223
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15224
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15225
0
        let layer_result = device_info
15226
0
            .customized_info
15227
0
            .borrow()
15228
0
            .hooks()
15229
0
            .cmd_set_front_face(command_buffer, front_face);
15230
0
        match layer_result {
15231
0
            LayerResult::Handled(res) => res,
15232
            LayerResult::Unhandled => unsafe {
15233
0
                (dispatch_table.cmd_set_front_face)(command_buffer, front_face)
15234
            },
15235
        }
15236
0
    }
15237
0
    extern "system" fn cmd_set_primitive_topology(
15238
0
        command_buffer: vk::CommandBuffer,
15239
0
        primitive_topology: vk::PrimitiveTopology,
15240
0
    ) {
15241
0
        let global = Self::instance();
15242
0
        // vkCmdSetPrimitiveTopology
15243
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15244
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15245
0
        let layer_result = device_info
15246
0
            .customized_info
15247
0
            .borrow()
15248
0
            .hooks()
15249
0
            .cmd_set_primitive_topology(command_buffer, primitive_topology);
15250
0
        match layer_result {
15251
0
            LayerResult::Handled(res) => res,
15252
            LayerResult::Unhandled => unsafe {
15253
0
                (dispatch_table.cmd_set_primitive_topology)(command_buffer, primitive_topology)
15254
            },
15255
        }
15256
0
    }
15257
0
    extern "system" fn cmd_set_viewport_with_count(
15258
0
        command_buffer: vk::CommandBuffer,
15259
0
        viewport_count: u32,
15260
0
        p_viewports: *const vk::Viewport,
15261
0
    ) {
15262
0
        let global = Self::instance();
15263
0
        // vkCmdSetViewportWithCount
15264
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15265
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15266
0
        let layer_result = device_info
15267
0
            .customized_info
15268
0
            .borrow()
15269
0
            .hooks()
15270
0
            .cmd_set_viewport_with_count(command_buffer, unsafe {
15271
0
                slice_from_raw_parts(p_viewports, viewport_count)
15272
0
            });
15273
0
        match layer_result {
15274
0
            LayerResult::Handled(res) => res,
15275
            LayerResult::Unhandled => unsafe {
15276
0
                (dispatch_table.cmd_set_viewport_with_count)(
15277
0
                    command_buffer,
15278
0
                    viewport_count,
15279
0
                    p_viewports,
15280
0
                )
15281
            },
15282
        }
15283
0
    }
15284
0
    extern "system" fn cmd_set_scissor_with_count(
15285
0
        command_buffer: vk::CommandBuffer,
15286
0
        scissor_count: u32,
15287
0
        p_scissors: *const vk::Rect2D,
15288
0
    ) {
15289
0
        let global = Self::instance();
15290
0
        // vkCmdSetScissorWithCount
15291
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15292
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15293
0
        let layer_result = device_info
15294
0
            .customized_info
15295
0
            .borrow()
15296
0
            .hooks()
15297
0
            .cmd_set_scissor_with_count(command_buffer, unsafe {
15298
0
                slice_from_raw_parts(p_scissors, scissor_count)
15299
0
            });
15300
0
        match layer_result {
15301
0
            LayerResult::Handled(res) => res,
15302
            LayerResult::Unhandled => unsafe {
15303
0
                (dispatch_table.cmd_set_scissor_with_count)(
15304
0
                    command_buffer,
15305
0
                    scissor_count,
15306
0
                    p_scissors,
15307
0
                )
15308
            },
15309
        }
15310
0
    }
15311
0
    extern "system" fn cmd_bind_vertex_buffers2(
15312
0
        command_buffer: vk::CommandBuffer,
15313
0
        first_binding: u32,
15314
0
        binding_count: u32,
15315
0
        p_buffers: *const vk::Buffer,
15316
0
        p_offsets: *const vk::DeviceSize,
15317
0
        p_sizes: *const vk::DeviceSize,
15318
0
        p_strides: *const vk::DeviceSize,
15319
0
    ) {
15320
0
        let global = Self::instance();
15321
0
        // vkCmdBindVertexBuffers2
15322
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15323
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15324
0
        let layer_result = device_info
15325
0
            .customized_info
15326
0
            .borrow()
15327
0
            .hooks()
15328
0
            .cmd_bind_vertex_buffers2(
15329
0
                command_buffer,
15330
0
                first_binding,
15331
0
                unsafe { slice_from_raw_parts(p_buffers, binding_count) },
15332
0
                unsafe { slice_from_raw_parts(p_offsets, binding_count) },
15333
0
                unsafe { maybe_slice_from_raw_parts(p_sizes, binding_count) },
15334
0
                unsafe { maybe_slice_from_raw_parts(p_strides, binding_count) },
15335
0
            );
15336
0
        match layer_result {
15337
0
            LayerResult::Handled(res) => res,
15338
            LayerResult::Unhandled => unsafe {
15339
0
                (dispatch_table.cmd_bind_vertex_buffers2)(
15340
0
                    command_buffer,
15341
0
                    first_binding,
15342
0
                    binding_count,
15343
0
                    p_buffers,
15344
0
                    p_offsets,
15345
0
                    p_sizes,
15346
0
                    p_strides,
15347
0
                )
15348
            },
15349
        }
15350
0
    }
15351
0
    extern "system" fn cmd_set_depth_test_enable(
15352
0
        command_buffer: vk::CommandBuffer,
15353
0
        depth_test_enable: vk::Bool32,
15354
0
    ) {
15355
0
        let global = Self::instance();
15356
0
        // vkCmdSetDepthTestEnable
15357
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15358
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15359
0
        let layer_result = device_info
15360
0
            .customized_info
15361
0
            .borrow()
15362
0
            .hooks()
15363
0
            .cmd_set_depth_test_enable(command_buffer, depth_test_enable == vk::TRUE);
15364
0
        match layer_result {
15365
0
            LayerResult::Handled(res) => res,
15366
            LayerResult::Unhandled => unsafe {
15367
0
                (dispatch_table.cmd_set_depth_test_enable)(command_buffer, depth_test_enable)
15368
            },
15369
        }
15370
0
    }
15371
0
    extern "system" fn cmd_set_depth_write_enable(
15372
0
        command_buffer: vk::CommandBuffer,
15373
0
        depth_write_enable: vk::Bool32,
15374
0
    ) {
15375
0
        let global = Self::instance();
15376
0
        // vkCmdSetDepthWriteEnable
15377
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15378
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15379
0
        let layer_result = device_info
15380
0
            .customized_info
15381
0
            .borrow()
15382
0
            .hooks()
15383
0
            .cmd_set_depth_write_enable(command_buffer, depth_write_enable == vk::TRUE);
15384
0
        match layer_result {
15385
0
            LayerResult::Handled(res) => res,
15386
            LayerResult::Unhandled => unsafe {
15387
0
                (dispatch_table.cmd_set_depth_write_enable)(command_buffer, depth_write_enable)
15388
            },
15389
        }
15390
0
    }
15391
0
    extern "system" fn cmd_set_depth_compare_op(
15392
0
        command_buffer: vk::CommandBuffer,
15393
0
        depth_compare_op: vk::CompareOp,
15394
0
    ) {
15395
0
        let global = Self::instance();
15396
0
        // vkCmdSetDepthCompareOp
15397
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15398
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15399
0
        let layer_result = device_info
15400
0
            .customized_info
15401
0
            .borrow()
15402
0
            .hooks()
15403
0
            .cmd_set_depth_compare_op(command_buffer, depth_compare_op);
15404
0
        match layer_result {
15405
0
            LayerResult::Handled(res) => res,
15406
            LayerResult::Unhandled => unsafe {
15407
0
                (dispatch_table.cmd_set_depth_compare_op)(command_buffer, depth_compare_op)
15408
            },
15409
        }
15410
0
    }
15411
0
    extern "system" fn cmd_set_depth_bounds_test_enable(
15412
0
        command_buffer: vk::CommandBuffer,
15413
0
        depth_bounds_test_enable: vk::Bool32,
15414
0
    ) {
15415
0
        let global = Self::instance();
15416
0
        // vkCmdSetDepthBoundsTestEnable
15417
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15418
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15419
0
        let layer_result = device_info
15420
0
            .customized_info
15421
0
            .borrow()
15422
0
            .hooks()
15423
0
            .cmd_set_depth_bounds_test_enable(command_buffer, depth_bounds_test_enable == vk::TRUE);
15424
0
        match layer_result {
15425
0
            LayerResult::Handled(res) => res,
15426
            LayerResult::Unhandled => unsafe {
15427
0
                (dispatch_table.cmd_set_depth_bounds_test_enable)(
15428
0
                    command_buffer,
15429
0
                    depth_bounds_test_enable,
15430
0
                )
15431
            },
15432
        }
15433
0
    }
15434
0
    extern "system" fn cmd_set_stencil_test_enable(
15435
0
        command_buffer: vk::CommandBuffer,
15436
0
        stencil_test_enable: vk::Bool32,
15437
0
    ) {
15438
0
        let global = Self::instance();
15439
0
        // vkCmdSetStencilTestEnable
15440
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15441
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15442
0
        let layer_result = device_info
15443
0
            .customized_info
15444
0
            .borrow()
15445
0
            .hooks()
15446
0
            .cmd_set_stencil_test_enable(command_buffer, stencil_test_enable == vk::TRUE);
15447
0
        match layer_result {
15448
0
            LayerResult::Handled(res) => res,
15449
            LayerResult::Unhandled => unsafe {
15450
0
                (dispatch_table.cmd_set_stencil_test_enable)(command_buffer, stencil_test_enable)
15451
            },
15452
        }
15453
0
    }
15454
0
    extern "system" fn cmd_set_stencil_op(
15455
0
        command_buffer: vk::CommandBuffer,
15456
0
        face_mask: vk::StencilFaceFlags,
15457
0
        fail_op: vk::StencilOp,
15458
0
        pass_op: vk::StencilOp,
15459
0
        depth_fail_op: vk::StencilOp,
15460
0
        compare_op: vk::CompareOp,
15461
0
    ) {
15462
0
        let global = Self::instance();
15463
0
        // vkCmdSetStencilOp
15464
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15465
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15466
0
        let layer_result = device_info
15467
0
            .customized_info
15468
0
            .borrow()
15469
0
            .hooks()
15470
0
            .cmd_set_stencil_op(
15471
0
                command_buffer,
15472
0
                face_mask,
15473
0
                fail_op,
15474
0
                pass_op,
15475
0
                depth_fail_op,
15476
0
                compare_op,
15477
0
            );
15478
0
        match layer_result {
15479
0
            LayerResult::Handled(res) => res,
15480
            LayerResult::Unhandled => unsafe {
15481
0
                (dispatch_table.cmd_set_stencil_op)(
15482
0
                    command_buffer,
15483
0
                    face_mask,
15484
0
                    fail_op,
15485
0
                    pass_op,
15486
0
                    depth_fail_op,
15487
0
                    compare_op,
15488
0
                )
15489
            },
15490
        }
15491
0
    }
15492
0
    extern "system" fn cmd_set_rasterizer_discard_enable(
15493
0
        command_buffer: vk::CommandBuffer,
15494
0
        rasterizer_discard_enable: vk::Bool32,
15495
0
    ) {
15496
0
        let global = Self::instance();
15497
0
        // vkCmdSetRasterizerDiscardEnable
15498
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15499
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15500
0
        let layer_result = device_info
15501
0
            .customized_info
15502
0
            .borrow()
15503
0
            .hooks()
15504
0
            .cmd_set_rasterizer_discard_enable(
15505
0
                command_buffer,
15506
0
                rasterizer_discard_enable == vk::TRUE,
15507
0
            );
15508
0
        match layer_result {
15509
0
            LayerResult::Handled(res) => res,
15510
            LayerResult::Unhandled => unsafe {
15511
0
                (dispatch_table.cmd_set_rasterizer_discard_enable)(
15512
0
                    command_buffer,
15513
0
                    rasterizer_discard_enable,
15514
0
                )
15515
            },
15516
        }
15517
0
    }
15518
0
    extern "system" fn cmd_set_depth_bias_enable(
15519
0
        command_buffer: vk::CommandBuffer,
15520
0
        depth_bias_enable: vk::Bool32,
15521
0
    ) {
15522
0
        let global = Self::instance();
15523
0
        // vkCmdSetDepthBiasEnable
15524
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15525
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15526
0
        let layer_result = device_info
15527
0
            .customized_info
15528
0
            .borrow()
15529
0
            .hooks()
15530
0
            .cmd_set_depth_bias_enable(command_buffer, depth_bias_enable == vk::TRUE);
15531
0
        match layer_result {
15532
0
            LayerResult::Handled(res) => res,
15533
            LayerResult::Unhandled => unsafe {
15534
0
                (dispatch_table.cmd_set_depth_bias_enable)(command_buffer, depth_bias_enable)
15535
            },
15536
        }
15537
0
    }
15538
0
    extern "system" fn cmd_set_primitive_restart_enable(
15539
0
        command_buffer: vk::CommandBuffer,
15540
0
        primitive_restart_enable: vk::Bool32,
15541
0
    ) {
15542
0
        let global = Self::instance();
15543
0
        // vkCmdSetPrimitiveRestartEnable
15544
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15545
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15546
0
        let layer_result = device_info
15547
0
            .customized_info
15548
0
            .borrow()
15549
0
            .hooks()
15550
0
            .cmd_set_primitive_restart_enable(command_buffer, primitive_restart_enable == vk::TRUE);
15551
0
        match layer_result {
15552
0
            LayerResult::Handled(res) => res,
15553
            LayerResult::Unhandled => unsafe {
15554
0
                (dispatch_table.cmd_set_primitive_restart_enable)(
15555
0
                    command_buffer,
15556
0
                    primitive_restart_enable,
15557
0
                )
15558
            },
15559
        }
15560
0
    }
15561
0
    extern "system" fn get_device_buffer_memory_requirements(
15562
0
        device: vk::Device,
15563
0
        p_info: *const vk::DeviceBufferMemoryRequirements,
15564
0
        p_memory_requirements: *mut vk::MemoryRequirements2,
15565
0
    ) {
15566
0
        let global = Self::instance();
15567
0
        // vkGetDeviceBufferMemoryRequirements
15568
0
        let device_info = global.get_device_info(device).unwrap();
15569
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15570
0
        let layer_result = device_info
15571
0
            .customized_info
15572
0
            .borrow()
15573
0
            .hooks()
15574
0
            .get_device_buffer_memory_requirements(
15575
0
                unsafe { p_info.as_ref() }.unwrap(),
15576
0
                unsafe { ptr_as_uninit_mut(p_memory_requirements) }.unwrap(),
15577
0
            );
15578
0
        match layer_result {
15579
0
            LayerResult::Handled(res) => res,
15580
            LayerResult::Unhandled => unsafe {
15581
0
                (dispatch_table.get_device_buffer_memory_requirements)(
15582
0
                    device,
15583
0
                    p_info,
15584
0
                    p_memory_requirements,
15585
0
                )
15586
            },
15587
        }
15588
0
    }
15589
0
    extern "system" fn get_device_image_memory_requirements(
15590
0
        device: vk::Device,
15591
0
        p_info: *const vk::DeviceImageMemoryRequirements,
15592
0
        p_memory_requirements: *mut vk::MemoryRequirements2,
15593
0
    ) {
15594
0
        let global = Self::instance();
15595
0
        // vkGetDeviceImageMemoryRequirements
15596
0
        let device_info = global.get_device_info(device).unwrap();
15597
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15598
0
        let layer_result = device_info
15599
0
            .customized_info
15600
0
            .borrow()
15601
0
            .hooks()
15602
0
            .get_device_image_memory_requirements(
15603
0
                unsafe { p_info.as_ref() }.unwrap(),
15604
0
                unsafe { ptr_as_uninit_mut(p_memory_requirements) }.unwrap(),
15605
0
            );
15606
0
        match layer_result {
15607
0
            LayerResult::Handled(res) => res,
15608
            LayerResult::Unhandled => unsafe {
15609
0
                (dispatch_table.get_device_image_memory_requirements)(
15610
0
                    device,
15611
0
                    p_info,
15612
0
                    p_memory_requirements,
15613
0
                )
15614
            },
15615
        }
15616
0
    }
15617
0
    extern "system" fn get_device_image_sparse_memory_requirements(
15618
0
        device: vk::Device,
15619
0
        p_info: *const vk::DeviceImageMemoryRequirements,
15620
0
        p_sparse_memory_requirement_count: *mut u32,
15621
0
        p_sparse_memory_requirements: *mut vk::SparseImageMemoryRequirements2,
15622
0
    ) {
15623
0
        let global = Self::instance();
15624
0
        // vkGetDeviceImageSparseMemoryRequirements
15625
0
        let device_info = global.get_device_info(device).unwrap();
15626
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15627
0
        let layer_result = device_info
15628
0
            .customized_info
15629
0
            .borrow()
15630
0
            .hooks()
15631
0
            .get_device_image_sparse_memory_requirements(
15632
0
                unsafe { p_info.as_ref() }.unwrap(),
15633
0
                unsafe { ptr_as_uninit_mut(p_sparse_memory_requirement_count) }.unwrap(),
15634
0
                unsafe {
15635
0
                    maybe_uninit_slice_from_raw_parts_mut(
15636
0
                        p_sparse_memory_requirements,
15637
0
                        p_sparse_memory_requirement_count,
15638
0
                    )
15639
0
                },
15640
0
            );
15641
0
        match layer_result {
15642
0
            LayerResult::Handled(res) => res,
15643
            LayerResult::Unhandled => unsafe {
15644
0
                (dispatch_table.get_device_image_sparse_memory_requirements)(
15645
0
                    device,
15646
0
                    p_info,
15647
0
                    p_sparse_memory_requirement_count,
15648
0
                    p_sparse_memory_requirements,
15649
0
                )
15650
            },
15651
        }
15652
0
    }
15653
0
    extern "system" fn create_swapchain_khr(
15654
0
        device: vk::Device,
15655
0
        p_create_info: *const vk::SwapchainCreateInfoKHR,
15656
0
        p_allocator: *const vk::AllocationCallbacks,
15657
0
        p_swapchain: *mut vk::SwapchainKHR,
15658
0
    ) -> vk::Result {
15659
0
        let global = Self::instance();
15660
0
        // vkCreateSwapchainKHR
15661
0
        let device_info = global.get_device_info(device).unwrap();
15662
0
        let dispatch_table = &device_info.dispatch_table.khr_swapchain;
15663
0
        let layer_result = device_info
15664
0
            .customized_info
15665
0
            .borrow()
15666
0
            .hooks()
15667
0
            .create_swapchain_khr(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
15668
0
                p_allocator.as_ref()
15669
0
            });
15670
0
        match layer_result {
15671
0
            LayerResult::Handled(res) => match res {
15672
0
                Ok(res) => {
15673
0
                    *unsafe { p_swapchain.as_mut() }.unwrap() = res;
15674
0
                    vk::Result::SUCCESS
15675
                }
15676
0
                Err(e) => e,
15677
            },
15678
            LayerResult::Unhandled => unsafe {
15679
0
                (dispatch_table.create_swapchain_khr)(
15680
0
                    device,
15681
0
                    p_create_info,
15682
0
                    p_allocator,
15683
0
                    p_swapchain,
15684
0
                )
15685
            },
15686
        }
15687
0
    }
15688
1
    extern "system" fn destroy_swapchain_khr(
15689
1
        device: vk::Device,
15690
1
        swapchain: vk::SwapchainKHR,
15691
1
        p_allocator: *const vk::AllocationCallbacks,
15692
1
    ) {
15693
1
        let global = Self::instance();
15694
1
        // vkDestroySwapchainKHR
15695
1
        let device_info = global.get_device_info(device).unwrap();
15696
1
        let dispatch_table = &device_info.dispatch_table.khr_swapchain;
15697
1
        let layer_result = device_info
15698
1
            .customized_info
15699
1
            .borrow()
15700
1
            .hooks()
15701
1
            .destroy_swapchain_khr(swapchain, unsafe { p_allocator.as_ref() });
15702
1
        match layer_result {
15703
1
            LayerResult::Handled(res) => res,
15704
            LayerResult::Unhandled => unsafe {
15705
0
                (dispatch_table.destroy_swapchain_khr)(device, swapchain, p_allocator)
15706
            },
15707
        }
15708
1
    }
15709
0
    extern "system" fn get_swapchain_images_khr(
15710
0
        device: vk::Device,
15711
0
        swapchain: vk::SwapchainKHR,
15712
0
        p_swapchain_image_count: *mut u32,
15713
0
        p_swapchain_images: *mut vk::Image,
15714
0
    ) -> vk::Result {
15715
0
        let global = Self::instance();
15716
0
        // vkGetSwapchainImagesKHR
15717
0
        let device_info = global.get_device_info(device).unwrap();
15718
0
        let dispatch_table = &device_info.dispatch_table.khr_swapchain;
15719
0
        let layer_result = device_info
15720
0
            .customized_info
15721
0
            .borrow()
15722
0
            .hooks()
15723
0
            .get_swapchain_images_khr(swapchain);
15724
0
        match layer_result {
15725
0
            LayerResult::Handled(res) => match res {
15726
0
                Ok(res) => unsafe {
15727
0
                    fill_vk_out_array(
15728
0
                        &res,
15729
0
                        NonNull::new(p_swapchain_image_count).unwrap(),
15730
0
                        p_swapchain_images,
15731
0
                    )
15732
                },
15733
0
                Err(e) => e,
15734
            },
15735
            LayerResult::Unhandled => unsafe {
15736
0
                (dispatch_table.get_swapchain_images_khr)(
15737
0
                    device,
15738
0
                    swapchain,
15739
0
                    p_swapchain_image_count,
15740
0
                    p_swapchain_images,
15741
0
                )
15742
            },
15743
        }
15744
0
    }
15745
0
    extern "system" fn acquire_next_image_khr(
15746
0
        device: vk::Device,
15747
0
        swapchain: vk::SwapchainKHR,
15748
0
        timeout: u64,
15749
0
        semaphore: vk::Semaphore,
15750
0
        fence: vk::Fence,
15751
0
        p_image_index: *mut u32,
15752
0
    ) -> vk::Result {
15753
0
        let global = Self::instance();
15754
0
        // vkAcquireNextImageKHR
15755
0
        let device_info = global.get_device_info(device).unwrap();
15756
0
        let dispatch_table = &device_info.dispatch_table.khr_swapchain;
15757
0
        let layer_result = device_info
15758
0
            .customized_info
15759
0
            .borrow()
15760
0
            .hooks()
15761
0
            .acquire_next_image_khr(swapchain, timeout, semaphore, fence);
15762
0
        match layer_result {
15763
0
            LayerResult::Handled(res) => match res {
15764
0
                Ok(res) => {
15765
0
                    *unsafe { p_image_index.as_mut() }.unwrap() = res;
15766
0
                    vk::Result::SUCCESS
15767
                }
15768
0
                Err(e) => e,
15769
            },
15770
            LayerResult::Unhandled => unsafe {
15771
0
                (dispatch_table.acquire_next_image_khr)(
15772
0
                    device,
15773
0
                    swapchain,
15774
0
                    timeout,
15775
0
                    semaphore,
15776
0
                    fence,
15777
0
                    p_image_index,
15778
0
                )
15779
            },
15780
        }
15781
0
    }
15782
0
    extern "system" fn queue_present_khr(
15783
0
        queue: vk::Queue,
15784
0
        p_present_info: *const vk::PresentInfoKHR,
15785
0
    ) -> vk::Result {
15786
0
        let global = Self::instance();
15787
0
        // vkQueuePresentKHR
15788
0
        let device_info = global.get_device_info(queue).unwrap();
15789
0
        let dispatch_table = &device_info.dispatch_table.khr_swapchain;
15790
0
        let layer_result = device_info
15791
0
            .customized_info
15792
0
            .borrow()
15793
0
            .hooks()
15794
0
            .queue_present_khr(queue, unsafe { p_present_info.as_ref() }.unwrap());
15795
0
        match layer_result {
15796
0
            LayerResult::Handled(res) => match res {
15797
0
                Ok(()) => vk::Result::SUCCESS,
15798
0
                Err(e) => e,
15799
            },
15800
            LayerResult::Unhandled => unsafe {
15801
0
                (dispatch_table.queue_present_khr)(queue, p_present_info)
15802
            },
15803
        }
15804
0
    }
15805
0
    extern "system" fn get_device_group_present_capabilities_khr(
15806
0
        device: vk::Device,
15807
0
        p_device_group_present_capabilities: *mut vk::DeviceGroupPresentCapabilitiesKHR,
15808
0
    ) -> vk::Result {
15809
0
        let global = Self::instance();
15810
0
        // vkGetDeviceGroupPresentCapabilitiesKHR
15811
0
        let device_info = global.get_device_info(device).unwrap();
15812
0
        let dispatch_table = &device_info.dispatch_table.khr_swapchain;
15813
0
        let layer_result = device_info
15814
0
            .customized_info
15815
0
            .borrow()
15816
0
            .hooks()
15817
0
            .get_device_group_present_capabilities_khr(
15818
0
                unsafe { ptr_as_uninit_mut(p_device_group_present_capabilities) }.unwrap(),
15819
0
            );
15820
0
        match layer_result {
15821
0
            LayerResult::Handled(res) => match res {
15822
0
                Ok(()) => vk::Result::SUCCESS,
15823
0
                Err(e) => e,
15824
            },
15825
            LayerResult::Unhandled => unsafe {
15826
0
                (dispatch_table.get_device_group_present_capabilities_khr)(
15827
0
                    device,
15828
0
                    p_device_group_present_capabilities,
15829
0
                )
15830
            },
15831
        }
15832
0
    }
15833
0
    extern "system" fn get_device_group_surface_present_modes_khr(
15834
0
        device: vk::Device,
15835
0
        surface: vk::SurfaceKHR,
15836
0
        p_modes: *mut vk::DeviceGroupPresentModeFlagsKHR,
15837
0
    ) -> vk::Result {
15838
0
        let global = Self::instance();
15839
0
        // vkGetDeviceGroupSurfacePresentModesKHR
15840
0
        let device_info = global.get_device_info(device).unwrap();
15841
0
        let dispatch_table = &device_info.dispatch_table.khr_swapchain;
15842
0
        let layer_result = device_info
15843
0
            .customized_info
15844
0
            .borrow()
15845
0
            .hooks()
15846
0
            .get_device_group_surface_present_modes_khr(surface);
15847
0
        match layer_result {
15848
0
            LayerResult::Handled(res) => match res {
15849
0
                Ok(res) => {
15850
0
                    *unsafe { p_modes.as_mut() }.unwrap() = res;
15851
0
                    vk::Result::SUCCESS
15852
                }
15853
0
                Err(e) => e,
15854
            },
15855
            LayerResult::Unhandled => unsafe {
15856
0
                (dispatch_table.get_device_group_surface_present_modes_khr)(
15857
0
                    device, surface, p_modes,
15858
0
                )
15859
            },
15860
        }
15861
0
    }
15862
0
    extern "system" fn acquire_next_image2_khr(
15863
0
        device: vk::Device,
15864
0
        p_acquire_info: *const vk::AcquireNextImageInfoKHR,
15865
0
        p_image_index: *mut u32,
15866
0
    ) -> vk::Result {
15867
0
        let global = Self::instance();
15868
0
        // vkAcquireNextImage2KHR
15869
0
        let device_info = global.get_device_info(device).unwrap();
15870
0
        let dispatch_table = &device_info.dispatch_table.khr_swapchain;
15871
0
        let layer_result = device_info
15872
0
            .customized_info
15873
0
            .borrow()
15874
0
            .hooks()
15875
0
            .acquire_next_image2_khr(unsafe { p_acquire_info.as_ref() }.unwrap());
15876
0
        match layer_result {
15877
0
            LayerResult::Handled(res) => match res {
15878
0
                Ok(res) => {
15879
0
                    *unsafe { p_image_index.as_mut() }.unwrap() = res;
15880
0
                    vk::Result::SUCCESS
15881
                }
15882
0
                Err(e) => e,
15883
            },
15884
            LayerResult::Unhandled => unsafe {
15885
0
                (dispatch_table.acquire_next_image2_khr)(device, p_acquire_info, p_image_index)
15886
            },
15887
        }
15888
0
    }
15889
0
    extern "system" fn create_shared_swapchains_khr(
15890
0
        device: vk::Device,
15891
0
        swapchain_count: u32,
15892
0
        p_create_infos: *const vk::SwapchainCreateInfoKHR,
15893
0
        p_allocator: *const vk::AllocationCallbacks,
15894
0
        p_swapchains: *mut vk::SwapchainKHR,
15895
0
    ) -> vk::Result {
15896
0
        let global = Self::instance();
15897
0
        // vkCreateSharedSwapchainsKHR
15898
0
        let device_info = global.get_device_info(device).unwrap();
15899
0
        let dispatch_table = &device_info.dispatch_table.khr_display_swapchain;
15900
0
        let layer_result = device_info
15901
0
            .customized_info
15902
0
            .borrow()
15903
0
            .hooks()
15904
0
            .create_shared_swapchains_khr(
15905
0
                unsafe { slice_from_raw_parts(p_create_infos, swapchain_count) },
15906
0
                unsafe { p_allocator.as_ref() },
15907
0
            );
15908
0
        match layer_result {
15909
0
            LayerResult::Handled(res) => match res {
15910
0
                Ok(res) => {
15911
0
                    unsafe {
15912
0
                        std::slice::from_raw_parts_mut(
15913
0
                            p_swapchains,
15914
0
                            swapchain_count.try_into().unwrap(),
15915
0
                        )
15916
0
                    }
15917
0
                    .copy_from_slice(&res);
15918
0
                    vk::Result::SUCCESS
15919
                }
15920
0
                Err(e) => e,
15921
            },
15922
            LayerResult::Unhandled => unsafe {
15923
0
                (dispatch_table.create_shared_swapchains_khr)(
15924
0
                    device,
15925
0
                    swapchain_count,
15926
0
                    p_create_infos,
15927
0
                    p_allocator,
15928
0
                    p_swapchains,
15929
0
                )
15930
            },
15931
        }
15932
0
    }
15933
0
    extern "system" fn create_video_session_khr(
15934
0
        device: vk::Device,
15935
0
        p_create_info: *const vk::VideoSessionCreateInfoKHR,
15936
0
        p_allocator: *const vk::AllocationCallbacks,
15937
0
        p_video_session: *mut vk::VideoSessionKHR,
15938
0
    ) -> vk::Result {
15939
0
        let global = Self::instance();
15940
0
        // vkCreateVideoSessionKHR
15941
0
        let device_info = global.get_device_info(device).unwrap();
15942
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
15943
0
        let layer_result = device_info
15944
0
            .customized_info
15945
0
            .borrow()
15946
0
            .hooks()
15947
0
            .create_video_session_khr(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
15948
0
                p_allocator.as_ref()
15949
0
            });
15950
0
        match layer_result {
15951
0
            LayerResult::Handled(res) => match res {
15952
0
                Ok(res) => {
15953
0
                    *unsafe { p_video_session.as_mut() }.unwrap() = res;
15954
0
                    vk::Result::SUCCESS
15955
                }
15956
0
                Err(e) => e,
15957
            },
15958
            LayerResult::Unhandled => unsafe {
15959
0
                (dispatch_table.create_video_session_khr)(
15960
0
                    device,
15961
0
                    p_create_info,
15962
0
                    p_allocator,
15963
0
                    p_video_session,
15964
0
                )
15965
            },
15966
        }
15967
0
    }
15968
0
    extern "system" fn destroy_video_session_khr(
15969
0
        device: vk::Device,
15970
0
        video_session: vk::VideoSessionKHR,
15971
0
        p_allocator: *const vk::AllocationCallbacks,
15972
0
    ) {
15973
0
        let global = Self::instance();
15974
0
        // vkDestroyVideoSessionKHR
15975
0
        let device_info = global.get_device_info(device).unwrap();
15976
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
15977
0
        let layer_result = device_info
15978
0
            .customized_info
15979
0
            .borrow()
15980
0
            .hooks()
15981
0
            .destroy_video_session_khr(video_session, unsafe { p_allocator.as_ref() });
15982
0
        match layer_result {
15983
0
            LayerResult::Handled(res) => res,
15984
            LayerResult::Unhandled => unsafe {
15985
0
                (dispatch_table.destroy_video_session_khr)(device, video_session, p_allocator)
15986
            },
15987
        }
15988
0
    }
15989
0
    extern "system" fn get_video_session_memory_requirements_khr(
15990
0
        device: vk::Device,
15991
0
        video_session: vk::VideoSessionKHR,
15992
0
        p_memory_requirements_count: *mut u32,
15993
0
        p_memory_requirements: *mut vk::VideoSessionMemoryRequirementsKHR,
15994
0
    ) -> vk::Result {
15995
0
        let global = Self::instance();
15996
0
        // vkGetVideoSessionMemoryRequirementsKHR
15997
0
        let device_info = global.get_device_info(device).unwrap();
15998
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
15999
0
        let layer_result = device_info
16000
0
            .customized_info
16001
0
            .borrow()
16002
0
            .hooks()
16003
0
            .get_video_session_memory_requirements_khr(
16004
0
                video_session,
16005
0
                unsafe { ptr_as_uninit_mut(p_memory_requirements_count) }.unwrap(),
16006
0
                unsafe {
16007
0
                    maybe_uninit_slice_from_raw_parts_mut(
16008
0
                        p_memory_requirements,
16009
0
                        p_memory_requirements_count,
16010
0
                    )
16011
0
                },
16012
0
            );
16013
0
        match layer_result {
16014
0
            LayerResult::Handled(res) => match res {
16015
0
                Ok(()) => vk::Result::SUCCESS,
16016
0
                Err(e) => e,
16017
            },
16018
            LayerResult::Unhandled => unsafe {
16019
0
                (dispatch_table.get_video_session_memory_requirements_khr)(
16020
0
                    device,
16021
0
                    video_session,
16022
0
                    p_memory_requirements_count,
16023
0
                    p_memory_requirements,
16024
0
                )
16025
            },
16026
        }
16027
0
    }
16028
0
    extern "system" fn bind_video_session_memory_khr(
16029
0
        device: vk::Device,
16030
0
        video_session: vk::VideoSessionKHR,
16031
0
        bind_session_memory_info_count: u32,
16032
0
        p_bind_session_memory_infos: *const vk::BindVideoSessionMemoryInfoKHR,
16033
0
    ) -> vk::Result {
16034
0
        let global = Self::instance();
16035
0
        // vkBindVideoSessionMemoryKHR
16036
0
        let device_info = global.get_device_info(device).unwrap();
16037
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
16038
0
        let layer_result = device_info
16039
0
            .customized_info
16040
0
            .borrow()
16041
0
            .hooks()
16042
0
            .bind_video_session_memory_khr(video_session, unsafe {
16043
0
                slice_from_raw_parts(p_bind_session_memory_infos, bind_session_memory_info_count)
16044
0
            });
16045
0
        match layer_result {
16046
0
            LayerResult::Handled(res) => match res {
16047
0
                Ok(()) => vk::Result::SUCCESS,
16048
0
                Err(e) => e,
16049
            },
16050
            LayerResult::Unhandled => unsafe {
16051
0
                (dispatch_table.bind_video_session_memory_khr)(
16052
0
                    device,
16053
0
                    video_session,
16054
0
                    bind_session_memory_info_count,
16055
0
                    p_bind_session_memory_infos,
16056
0
                )
16057
            },
16058
        }
16059
0
    }
16060
0
    extern "system" fn create_video_session_parameters_khr(
16061
0
        device: vk::Device,
16062
0
        p_create_info: *const vk::VideoSessionParametersCreateInfoKHR,
16063
0
        p_allocator: *const vk::AllocationCallbacks,
16064
0
        p_video_session_parameters: *mut vk::VideoSessionParametersKHR,
16065
0
    ) -> vk::Result {
16066
0
        let global = Self::instance();
16067
0
        // vkCreateVideoSessionParametersKHR
16068
0
        let device_info = global.get_device_info(device).unwrap();
16069
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
16070
0
        let layer_result = device_info
16071
0
            .customized_info
16072
0
            .borrow()
16073
0
            .hooks()
16074
0
            .create_video_session_parameters_khr(
16075
0
                unsafe { p_create_info.as_ref() }.unwrap(),
16076
0
                unsafe { p_allocator.as_ref() },
16077
0
            );
16078
0
        match layer_result {
16079
0
            LayerResult::Handled(res) => match res {
16080
0
                Ok(res) => {
16081
0
                    *unsafe { p_video_session_parameters.as_mut() }.unwrap() = res;
16082
0
                    vk::Result::SUCCESS
16083
                }
16084
0
                Err(e) => e,
16085
            },
16086
            LayerResult::Unhandled => unsafe {
16087
0
                (dispatch_table.create_video_session_parameters_khr)(
16088
0
                    device,
16089
0
                    p_create_info,
16090
0
                    p_allocator,
16091
0
                    p_video_session_parameters,
16092
0
                )
16093
            },
16094
        }
16095
0
    }
16096
0
    extern "system" fn update_video_session_parameters_khr(
16097
0
        device: vk::Device,
16098
0
        video_session_parameters: vk::VideoSessionParametersKHR,
16099
0
        p_update_info: *const vk::VideoSessionParametersUpdateInfoKHR,
16100
0
    ) -> vk::Result {
16101
0
        let global = Self::instance();
16102
0
        // vkUpdateVideoSessionParametersKHR
16103
0
        let device_info = global.get_device_info(device).unwrap();
16104
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
16105
0
        let layer_result = device_info
16106
0
            .customized_info
16107
0
            .borrow()
16108
0
            .hooks()
16109
0
            .update_video_session_parameters_khr(
16110
0
                video_session_parameters,
16111
0
                unsafe { p_update_info.as_ref() }.unwrap(),
16112
0
            );
16113
0
        match layer_result {
16114
0
            LayerResult::Handled(res) => match res {
16115
0
                Ok(()) => vk::Result::SUCCESS,
16116
0
                Err(e) => e,
16117
            },
16118
            LayerResult::Unhandled => unsafe {
16119
0
                (dispatch_table.update_video_session_parameters_khr)(
16120
0
                    device,
16121
0
                    video_session_parameters,
16122
0
                    p_update_info,
16123
0
                )
16124
            },
16125
        }
16126
0
    }
16127
0
    extern "system" fn destroy_video_session_parameters_khr(
16128
0
        device: vk::Device,
16129
0
        video_session_parameters: vk::VideoSessionParametersKHR,
16130
0
        p_allocator: *const vk::AllocationCallbacks,
16131
0
    ) {
16132
0
        let global = Self::instance();
16133
0
        // vkDestroyVideoSessionParametersKHR
16134
0
        let device_info = global.get_device_info(device).unwrap();
16135
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
16136
0
        let layer_result = device_info
16137
0
            .customized_info
16138
0
            .borrow()
16139
0
            .hooks()
16140
0
            .destroy_video_session_parameters_khr(video_session_parameters, unsafe {
16141
0
                p_allocator.as_ref()
16142
0
            });
16143
0
        match layer_result {
16144
0
            LayerResult::Handled(res) => res,
16145
            LayerResult::Unhandled => unsafe {
16146
0
                (dispatch_table.destroy_video_session_parameters_khr)(
16147
0
                    device,
16148
0
                    video_session_parameters,
16149
0
                    p_allocator,
16150
0
                )
16151
            },
16152
        }
16153
0
    }
16154
0
    extern "system" fn cmd_begin_video_coding_khr(
16155
0
        command_buffer: vk::CommandBuffer,
16156
0
        p_begin_info: *const vk::VideoBeginCodingInfoKHR,
16157
0
    ) {
16158
0
        let global = Self::instance();
16159
0
        // vkCmdBeginVideoCodingKHR
16160
0
        let device_info = global.get_device_info(command_buffer).unwrap();
16161
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
16162
0
        let layer_result = device_info
16163
0
            .customized_info
16164
0
            .borrow()
16165
0
            .hooks()
16166
0
            .cmd_begin_video_coding_khr(command_buffer, unsafe { p_begin_info.as_ref() }.unwrap());
16167
0
        match layer_result {
16168
0
            LayerResult::Handled(res) => res,
16169
            LayerResult::Unhandled => unsafe {
16170
0
                (dispatch_table.cmd_begin_video_coding_khr)(command_buffer, p_begin_info)
16171
            },
16172
        }
16173
0
    }
16174
0
    extern "system" fn cmd_end_video_coding_khr(
16175
0
        command_buffer: vk::CommandBuffer,
16176
0
        p_end_coding_info: *const vk::VideoEndCodingInfoKHR,
16177
0
    ) {
16178
0
        let global = Self::instance();
16179
0
        // vkCmdEndVideoCodingKHR
16180
0
        let device_info = global.get_device_info(command_buffer).unwrap();
16181
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
16182
0
        let layer_result = device_info
16183
0
            .customized_info
16184
0
            .borrow()
16185
0
            .hooks()
16186
0
            .cmd_end_video_coding_khr(
16187
0
                command_buffer,
16188
0
                unsafe { p_end_coding_info.as_ref() }.unwrap(),
16189
0
            );
16190
0
        match layer_result {
16191
0
            LayerResult::Handled(res) => res,
16192
            LayerResult::Unhandled => unsafe {
16193
0
                (dispatch_table.cmd_end_video_coding_khr)(command_buffer, p_end_coding_info)
16194
            },
16195
        }
16196
0
    }
16197
0
    extern "system" fn cmd_control_video_coding_khr(
16198
0
        command_buffer: vk::CommandBuffer,
16199
0
        p_coding_control_info: *const vk::VideoCodingControlInfoKHR,
16200
0
    ) {
16201
0
        let global = Self::instance();
16202
0
        // vkCmdControlVideoCodingKHR
16203
0
        let device_info = global.get_device_info(command_buffer).unwrap();
16204
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
16205
0
        let layer_result = device_info
16206
0
            .customized_info
16207
0
            .borrow()
16208
0
            .hooks()
16209
0
            .cmd_control_video_coding_khr(
16210
0
                command_buffer,
16211
0
                unsafe { p_coding_control_info.as_ref() }.unwrap(),
16212
0
            );
16213
0
        match layer_result {
16214
0
            LayerResult::Handled(res) => res,
16215
            LayerResult::Unhandled => unsafe {
16216
0
                (dispatch_table.cmd_control_video_coding_khr)(command_buffer, p_coding_control_info)
16217
            },
16218
        }
16219
0
    }
16220
0
    extern "system" fn cmd_decode_video_khr(
16221
0
        command_buffer: vk::CommandBuffer,
16222
0
        p_decode_info: *const vk::VideoDecodeInfoKHR,
16223
0
    ) {
16224
0
        let global = Self::instance();
16225
0
        // vkCmdDecodeVideoKHR
16226
0
        let device_info = global.get_device_info(command_buffer).unwrap();
16227
0
        let dispatch_table = &device_info.dispatch_table.khr_video_decode_queue;
16228
0
        let layer_result = device_info
16229
0
            .customized_info
16230
0
            .borrow()
16231
0
            .hooks()
16232
0
            .cmd_decode_video_khr(command_buffer, unsafe { p_decode_info.as_ref() }.unwrap());
16233
0
        match layer_result {
16234
0
            LayerResult::Handled(res) => res,
16235
            LayerResult::Unhandled => unsafe {
16236
0
                (dispatch_table.cmd_decode_video_khr)(command_buffer, p_decode_info)
16237
            },
16238
        }
16239
0
    }
16240
0
    extern "system" fn get_memory_win32_handle_khr(
16241
0
        device: vk::Device,
16242
0
        p_get_win32_handle_info: *const vk::MemoryGetWin32HandleInfoKHR,
16243
0
        p_handle: *mut vk::HANDLE,
16244
0
    ) -> vk::Result {
16245
0
        let global = Self::instance();
16246
0
        // vkGetMemoryWin32HandleKHR
16247
0
        let device_info = global.get_device_info(device).unwrap();
16248
0
        let dispatch_table = &device_info.dispatch_table.khr_external_memory_win32;
16249
0
        let layer_result = device_info
16250
0
            .customized_info
16251
0
            .borrow()
16252
0
            .hooks()
16253
0
            .get_memory_win32_handle_khr(unsafe { p_get_win32_handle_info.as_ref() }.unwrap());
16254
0
        match layer_result {
16255
0
            LayerResult::Handled(res) => match res {
16256
0
                Ok(res) => {
16257
0
                    *unsafe { p_handle.as_mut() }.unwrap() = res;
16258
0
                    vk::Result::SUCCESS
16259
                }
16260
0
                Err(e) => e,
16261
            },
16262
            LayerResult::Unhandled => unsafe {
16263
0
                (dispatch_table.get_memory_win32_handle_khr)(
16264
0
                    device,
16265
0
                    p_get_win32_handle_info,
16266
0
                    p_handle,
16267
0
                )
16268
            },
16269
        }
16270
0
    }
16271
0
    extern "system" fn get_memory_win32_handle_properties_khr(
16272
0
        device: vk::Device,
16273
0
        handle_type: vk::ExternalMemoryHandleTypeFlags,
16274
0
        handle: vk::HANDLE,
16275
0
        p_memory_win32_handle_properties: *mut vk::MemoryWin32HandlePropertiesKHR,
16276
0
    ) -> vk::Result {
16277
0
        let global = Self::instance();
16278
0
        // vkGetMemoryWin32HandlePropertiesKHR
16279
0
        let device_info = global.get_device_info(device).unwrap();
16280
0
        let dispatch_table = &device_info.dispatch_table.khr_external_memory_win32;
16281
0
        let layer_result = device_info
16282
0
            .customized_info
16283
0
            .borrow()
16284
0
            .hooks()
16285
0
            .get_memory_win32_handle_properties_khr(
16286
0
                handle_type,
16287
0
                handle,
16288
0
                unsafe { ptr_as_uninit_mut(p_memory_win32_handle_properties) }.unwrap(),
16289
0
            );
16290
0
        match layer_result {
16291
0
            LayerResult::Handled(res) => match res {
16292
0
                Ok(()) => vk::Result::SUCCESS,
16293
0
                Err(e) => e,
16294
            },
16295
            LayerResult::Unhandled => unsafe {
16296
0
                (dispatch_table.get_memory_win32_handle_properties_khr)(
16297
0
                    device,
16298
0
                    handle_type,
16299
0
                    handle,
16300
0
                    p_memory_win32_handle_properties,
16301
0
                )
16302
            },
16303
        }
16304
0
    }
16305
0
    extern "system" fn get_memory_fd_khr(
16306
0
        device: vk::Device,
16307
0
        p_get_fd_info: *const vk::MemoryGetFdInfoKHR,
16308
0
        p_fd: *mut c_int,
16309
0
    ) -> vk::Result {
16310
0
        let global = Self::instance();
16311
0
        // vkGetMemoryFdKHR
16312
0
        let device_info = global.get_device_info(device).unwrap();
16313
0
        let dispatch_table = &device_info.dispatch_table.khr_external_memory_fd;
16314
0
        let layer_result = device_info
16315
0
            .customized_info
16316
0
            .borrow()
16317
0
            .hooks()
16318
0
            .get_memory_fd_khr(unsafe { p_get_fd_info.as_ref() }.unwrap());
16319
0
        match layer_result {
16320
0
            LayerResult::Handled(res) => match res {
16321
0
                Ok(res) => {
16322
0
                    *unsafe { p_fd.as_mut() }.unwrap() = res;
16323
0
                    vk::Result::SUCCESS
16324
                }
16325
0
                Err(e) => e,
16326
            },
16327
            LayerResult::Unhandled => unsafe {
16328
0
                (dispatch_table.get_memory_fd_khr)(device, p_get_fd_info, p_fd)
16329
            },
16330
        }
16331
0
    }
16332
0
    extern "system" fn get_memory_fd_properties_khr(
16333
0
        device: vk::Device,
16334
0
        handle_type: vk::ExternalMemoryHandleTypeFlags,
16335
0
        fd: c_int,
16336
0
        p_memory_fd_properties: *mut vk::MemoryFdPropertiesKHR,
16337
0
    ) -> vk::Result {
16338
0
        let global = Self::instance();
16339
0
        // vkGetMemoryFdPropertiesKHR
16340
0
        let device_info = global.get_device_info(device).unwrap();
16341
0
        let dispatch_table = &device_info.dispatch_table.khr_external_memory_fd;
16342
0
        let layer_result = device_info
16343
0
            .customized_info
16344
0
            .borrow()
16345
0
            .hooks()
16346
0
            .get_memory_fd_properties_khr(
16347
0
                handle_type,
16348
0
                fd,
16349
0
                unsafe { ptr_as_uninit_mut(p_memory_fd_properties) }.unwrap(),
16350
0
            );
16351
0
        match layer_result {
16352
0
            LayerResult::Handled(res) => match res {
16353
0
                Ok(()) => vk::Result::SUCCESS,
16354
0
                Err(e) => e,
16355
            },
16356
            LayerResult::Unhandled => unsafe {
16357
0
                (dispatch_table.get_memory_fd_properties_khr)(
16358
0
                    device,
16359
0
                    handle_type,
16360
0
                    fd,
16361
0
                    p_memory_fd_properties,
16362
0
                )
16363
            },
16364
        }
16365
0
    }
16366
0
    extern "system" fn import_semaphore_win32_handle_khr(
16367
0
        device: vk::Device,
16368
0
        p_import_semaphore_win32_handle_info: *const vk::ImportSemaphoreWin32HandleInfoKHR,
16369
0
    ) -> vk::Result {
16370
0
        let global = Self::instance();
16371
0
        // vkImportSemaphoreWin32HandleKHR
16372
0
        let device_info = global.get_device_info(device).unwrap();
16373
0
        let dispatch_table = &device_info.dispatch_table.khr_external_semaphore_win32;
16374
0
        let layer_result = device_info
16375
0
            .customized_info
16376
0
            .borrow()
16377
0
            .hooks()
16378
0
            .import_semaphore_win32_handle_khr(
16379
0
                unsafe { p_import_semaphore_win32_handle_info.as_ref() }.unwrap(),
16380
0
            );
16381
0
        match layer_result {
16382
0
            LayerResult::Handled(res) => match res {
16383
0
                Ok(()) => vk::Result::SUCCESS,
16384
0
                Err(e) => e,
16385
            },
16386
            LayerResult::Unhandled => unsafe {
16387
0
                (dispatch_table.import_semaphore_win32_handle_khr)(
16388
0
                    device,
16389
0
                    p_import_semaphore_win32_handle_info,
16390
0
                )
16391
            },
16392
        }
16393
0
    }
16394
0
    extern "system" fn get_semaphore_win32_handle_khr(
16395
0
        device: vk::Device,
16396
0
        p_get_win32_handle_info: *const vk::SemaphoreGetWin32HandleInfoKHR,
16397
0
        p_handle: *mut vk::HANDLE,
16398
0
    ) -> vk::Result {
16399
0
        let global = Self::instance();
16400
0
        // vkGetSemaphoreWin32HandleKHR
16401
0
        let device_info = global.get_device_info(device).unwrap();
16402
0
        let dispatch_table = &device_info.dispatch_table.khr_external_semaphore_win32;
16403
0
        let layer_result = device_info
16404
0
            .customized_info
16405
0
            .borrow()
16406
0
            .hooks()
16407
0
            .get_semaphore_win32_handle_khr(unsafe { p_get_win32_handle_info.as_ref() }.unwrap());
16408
0
        match layer_result {
16409
0
            LayerResult::Handled(res) => match res {
16410
0
                Ok(res) => {
16411
0
                    *unsafe { p_handle.as_mut() }.unwrap() = res;
16412
0
                    vk::Result::SUCCESS
16413
                }
16414
0
                Err(e) => e,
16415
            },
16416
            LayerResult::Unhandled => unsafe {
16417
0
                (dispatch_table.get_semaphore_win32_handle_khr)(
16418
0
                    device,
16419
0
                    p_get_win32_handle_info,
16420
0
                    p_handle,
16421
0
                )
16422
            },
16423
        }
16424
0
    }
16425
0
    extern "system" fn import_semaphore_fd_khr(
16426
0
        device: vk::Device,
16427
0
        p_import_semaphore_fd_info: *const vk::ImportSemaphoreFdInfoKHR,
16428
0
    ) -> vk::Result {
16429
0
        let global = Self::instance();
16430
0
        // vkImportSemaphoreFdKHR
16431
0
        let device_info = global.get_device_info(device).unwrap();
16432
0
        let dispatch_table = &device_info.dispatch_table.khr_external_semaphore_fd;
16433
0
        let layer_result = device_info
16434
0
            .customized_info
16435
0
            .borrow()
16436
0
            .hooks()
16437
0
            .import_semaphore_fd_khr(unsafe { p_import_semaphore_fd_info.as_ref() }.unwrap());
16438
0
        match layer_result {
16439
0
            LayerResult::Handled(res) => match res {
16440
0
                Ok(()) => vk::Result::SUCCESS,
16441
0
                Err(e) => e,
16442
            },
16443
            LayerResult::Unhandled => unsafe {
16444
0
                (dispatch_table.import_semaphore_fd_khr)(device, p_import_semaphore_fd_info)
16445
            },
16446
        }
16447
0
    }
16448
0
    extern "system" fn get_semaphore_fd_khr(
16449
0
        device: vk::Device,
16450
0
        p_get_fd_info: *const vk::SemaphoreGetFdInfoKHR,
16451
0
        p_fd: *mut c_int,
16452
0
    ) -> vk::Result {
16453
0
        let global = Self::instance();
16454
0
        // vkGetSemaphoreFdKHR
16455
0
        let device_info = global.get_device_info(device).unwrap();
16456
0
        let dispatch_table = &device_info.dispatch_table.khr_external_semaphore_fd;
16457
0
        let layer_result = device_info
16458
0
            .customized_info
16459
0
            .borrow()
16460
0
            .hooks()
16461
0
            .get_semaphore_fd_khr(unsafe { p_get_fd_info.as_ref() }.unwrap());
16462
0
        match layer_result {
16463
0
            LayerResult::Handled(res) => match res {
16464
0
                Ok(res) => {
16465
0
                    *unsafe { p_fd.as_mut() }.unwrap() = res;
16466
0
                    vk::Result::SUCCESS
16467
                }
16468
0
                Err(e) => e,
16469
            },
16470
            LayerResult::Unhandled => unsafe {
16471
0
                (dispatch_table.get_semaphore_fd_khr)(device, p_get_fd_info, p_fd)
16472
            },
16473
        }
16474
0
    }
16475
0
    extern "system" fn cmd_push_descriptor_set_khr(
16476
0
        command_buffer: vk::CommandBuffer,
16477
0
        pipeline_bind_point: vk::PipelineBindPoint,
16478
0
        layout: vk::PipelineLayout,
16479
0
        set: u32,
16480
0
        descriptor_write_count: u32,
16481
0
        p_descriptor_writes: *const vk::WriteDescriptorSet,
16482
0
    ) {
16483
0
        let global = Self::instance();
16484
0
        // vkCmdPushDescriptorSetKHR
16485
0
        let device_info = global.get_device_info(command_buffer).unwrap();
16486
0
        let dispatch_table = &device_info.dispatch_table.khr_push_descriptor;
16487
0
        let layer_result = device_info
16488
0
            .customized_info
16489
0
            .borrow()
16490
0
            .hooks()
16491
0
            .cmd_push_descriptor_set_khr(
16492
0
                command_buffer,
16493
0
                pipeline_bind_point,
16494
0
                layout,
16495
0
                set,
16496
0
                unsafe { slice_from_raw_parts(p_descriptor_writes, descriptor_write_count) },
16497
0
            );
16498
0
        match layer_result {
16499
0
            LayerResult::Handled(res) => res,
16500
            LayerResult::Unhandled => unsafe {
16501
0
                (dispatch_table.cmd_push_descriptor_set_khr)(
16502
0
                    command_buffer,
16503
0
                    pipeline_bind_point,
16504
0
                    layout,
16505
0
                    set,
16506
0
                    descriptor_write_count,
16507
0
                    p_descriptor_writes,
16508
0
                )
16509
            },
16510
        }
16511
0
    }
16512
0
    extern "system" fn cmd_push_descriptor_set_with_template_khr(
16513
0
        command_buffer: vk::CommandBuffer,
16514
0
        descriptor_update_template: vk::DescriptorUpdateTemplate,
16515
0
        layout: vk::PipelineLayout,
16516
0
        set: u32,
16517
0
        p_data: *const c_void,
16518
0
    ) {
16519
0
        let global = Self::instance();
16520
0
        // vkCmdPushDescriptorSetWithTemplateKHR
16521
0
        let device_info = global.get_device_info(command_buffer).unwrap();
16522
0
        let dispatch_table = &device_info.dispatch_table.khr_push_descriptor;
16523
0
        let layer_result = device_info
16524
0
            .customized_info
16525
0
            .borrow()
16526
0
            .hooks()
16527
0
            .cmd_push_descriptor_set_with_template_khr(
16528
0
                command_buffer,
16529
0
                descriptor_update_template,
16530
0
                layout,
16531
0
                set,
16532
0
                p_data,
16533
0
            );
16534
0
        match layer_result {
16535
0
            LayerResult::Handled(res) => res,
16536
            LayerResult::Unhandled => unsafe {
16537
0
                (dispatch_table.cmd_push_descriptor_set_with_template_khr)(
16538
0
                    command_buffer,
16539
0
                    descriptor_update_template,
16540
0
                    layout,
16541
0
                    set,
16542
0
                    p_data,
16543
0
                )
16544
            },
16545
        }
16546
0
    }
16547
0
    extern "system" fn get_swapchain_status_khr(
16548
0
        device: vk::Device,
16549
0
        swapchain: vk::SwapchainKHR,
16550
0
    ) -> vk::Result {
16551
0
        let global = Self::instance();
16552
0
        // vkGetSwapchainStatusKHR
16553
0
        let device_info = global.get_device_info(device).unwrap();
16554
0
        let dispatch_table = &device_info.dispatch_table.khr_shared_presentable_image;
16555
0
        let layer_result = device_info
16556
0
            .customized_info
16557
0
            .borrow()
16558
0
            .hooks()
16559
0
            .get_swapchain_status_khr(swapchain);
16560
0
        match layer_result {
16561
0
            LayerResult::Handled(res) => match res {
16562
0
                Ok(()) => vk::Result::SUCCESS,
16563
0
                Err(e) => e,
16564
            },
16565
            LayerResult::Unhandled => unsafe {
16566
0
                (dispatch_table.get_swapchain_status_khr)(device, swapchain)
16567
            },
16568
        }
16569
0
    }
16570
0
    extern "system" fn import_fence_win32_handle_khr(
16571
0
        device: vk::Device,
16572
0
        p_import_fence_win32_handle_info: *const vk::ImportFenceWin32HandleInfoKHR,
16573
0
    ) -> vk::Result {
16574
0
        let global = Self::instance();
16575
0
        // vkImportFenceWin32HandleKHR
16576
0
        let device_info = global.get_device_info(device).unwrap();
16577
0
        let dispatch_table = &device_info.dispatch_table.khr_external_fence_win32;
16578
0
        let layer_result = device_info
16579
0
            .customized_info
16580
0
            .borrow()
16581
0
            .hooks()
16582
0
            .import_fence_win32_handle_khr(
16583
0
                unsafe { p_import_fence_win32_handle_info.as_ref() }.unwrap(),
16584
0
            );
16585
0
        match layer_result {
16586
0
            LayerResult::Handled(res) => match res {
16587
0
                Ok(()) => vk::Result::SUCCESS,
16588
0
                Err(e) => e,
16589
            },
16590
            LayerResult::Unhandled => unsafe {
16591
0
                (dispatch_table.import_fence_win32_handle_khr)(
16592
0
                    device,
16593
0
                    p_import_fence_win32_handle_info,
16594
0
                )
16595
            },
16596
        }
16597
0
    }
16598
0
    extern "system" fn get_fence_win32_handle_khr(
16599
0
        device: vk::Device,
16600
0
        p_get_win32_handle_info: *const vk::FenceGetWin32HandleInfoKHR,
16601
0
        p_handle: *mut vk::HANDLE,
16602
0
    ) -> vk::Result {
16603
0
        let global = Self::instance();
16604
0
        // vkGetFenceWin32HandleKHR
16605
0
        let device_info = global.get_device_info(device).unwrap();
16606
0
        let dispatch_table = &device_info.dispatch_table.khr_external_fence_win32;
16607
0
        let layer_result = device_info
16608
0
            .customized_info
16609
0
            .borrow()
16610
0
            .hooks()
16611
0
            .get_fence_win32_handle_khr(unsafe { p_get_win32_handle_info.as_ref() }.unwrap());
16612
0
        match layer_result {
16613
0
            LayerResult::Handled(res) => match res {
16614
0
                Ok(res) => {
16615
0
                    *unsafe { p_handle.as_mut() }.unwrap() = res;
16616
0
                    vk::Result::SUCCESS
16617
                }
16618
0
                Err(e) => e,
16619
            },
16620
            LayerResult::Unhandled => unsafe {
16621
0
                (dispatch_table.get_fence_win32_handle_khr)(
16622
0
                    device,
16623
0
                    p_get_win32_handle_info,
16624
0
                    p_handle,
16625
0
                )
16626
            },
16627
        }
16628
0
    }
16629
0
    extern "system" fn import_fence_fd_khr(
16630
0
        device: vk::Device,
16631
0
        p_import_fence_fd_info: *const vk::ImportFenceFdInfoKHR,
16632
0
    ) -> vk::Result {
16633
0
        let global = Self::instance();
16634
0
        // vkImportFenceFdKHR
16635
0
        let device_info = global.get_device_info(device).unwrap();
16636
0
        let dispatch_table = &device_info.dispatch_table.khr_external_fence_fd;
16637
0
        let layer_result = device_info
16638
0
            .customized_info
16639
0
            .borrow()
16640
0
            .hooks()
16641
0
            .import_fence_fd_khr(unsafe { p_import_fence_fd_info.as_ref() }.unwrap());
16642
0
        match layer_result {
16643
0
            LayerResult::Handled(res) => match res {
16644
0
                Ok(()) => vk::Result::SUCCESS,
16645
0
                Err(e) => e,
16646
            },
16647
            LayerResult::Unhandled => unsafe {
16648
0
                (dispatch_table.import_fence_fd_khr)(device, p_import_fence_fd_info)
16649
            },
16650
        }
16651
0
    }
16652
0
    extern "system" fn get_fence_fd_khr(
16653
0
        device: vk::Device,
16654
0
        p_get_fd_info: *const vk::FenceGetFdInfoKHR,
16655
0
        p_fd: *mut c_int,
16656
0
    ) -> vk::Result {
16657
0
        let global = Self::instance();
16658
0
        // vkGetFenceFdKHR
16659
0
        let device_info = global.get_device_info(device).unwrap();
16660
0
        let dispatch_table = &device_info.dispatch_table.khr_external_fence_fd;
16661
0
        let layer_result = device_info
16662
0
            .customized_info
16663
0
            .borrow()
16664
0
            .hooks()
16665
0
            .get_fence_fd_khr(unsafe { p_get_fd_info.as_ref() }.unwrap());
16666
0
        match layer_result {
16667
0
            LayerResult::Handled(res) => match res {
16668
0
                Ok(res) => {
16669
0
                    *unsafe { p_fd.as_mut() }.unwrap() = res;
16670
0
                    vk::Result::SUCCESS
16671
                }
16672
0
                Err(e) => e,
16673
            },
16674
            LayerResult::Unhandled => unsafe {
16675
0
                (dispatch_table.get_fence_fd_khr)(device, p_get_fd_info, p_fd)
16676
            },
16677
        }
16678
0
    }
16679
0
    extern "system" fn acquire_profiling_lock_khr(
16680
0
        device: vk::Device,
16681
0
        p_info: *const vk::AcquireProfilingLockInfoKHR,
16682
0
    ) -> vk::Result {
16683
0
        let global = Self::instance();
16684
0
        // vkAcquireProfilingLockKHR
16685
0
        let device_info = global.get_device_info(device).unwrap();
16686
0
        let dispatch_table = &device_info.dispatch_table.khr_performance_query;
16687
0
        let layer_result = device_info
16688
0
            .customized_info
16689
0
            .borrow()
16690
0
            .hooks()
16691
0
            .acquire_profiling_lock_khr(unsafe { p_info.as_ref() }.unwrap());
16692
0
        match layer_result {
16693
0
            LayerResult::Handled(res) => match res {
16694
0
                Ok(()) => vk::Result::SUCCESS,
16695
0
                Err(e) => e,
16696
            },
16697
            LayerResult::Unhandled => unsafe {
16698
0
                (dispatch_table.acquire_profiling_lock_khr)(device, p_info)
16699
            },
16700
        }
16701
0
    }
16702
0
    extern "system" fn release_profiling_lock_khr(device: vk::Device) {
16703
0
        let global = Self::instance();
16704
0
        // vkReleaseProfilingLockKHR
16705
0
        let device_info = global.get_device_info(device).unwrap();
16706
0
        let dispatch_table = &device_info.dispatch_table.khr_performance_query;
16707
0
        let layer_result = device_info
16708
0
            .customized_info
16709
0
            .borrow()
16710
0
            .hooks()
16711
0
            .release_profiling_lock_khr();
16712
0
        match layer_result {
16713
0
            LayerResult::Handled(res) => res,
16714
            LayerResult::Unhandled => unsafe {
16715
0
                (dispatch_table.release_profiling_lock_khr)(device)
16716
            },
16717
        }
16718
0
    }
16719
0
    extern "system" fn cmd_set_fragment_shading_rate_khr(
16720
0
        command_buffer: vk::CommandBuffer,
16721
0
        p_fragment_size: *const vk::Extent2D,
16722
0
        combiner_ops: *const [vk::FragmentShadingRateCombinerOpKHR; 2],
16723
0
    ) {
16724
0
        let global = Self::instance();
16725
0
        // vkCmdSetFragmentShadingRateKHR
16726
0
        let device_info = global.get_device_info(command_buffer).unwrap();
16727
0
        let dispatch_table = &device_info.dispatch_table.khr_fragment_shading_rate;
16728
0
        let layer_result = device_info
16729
0
            .customized_info
16730
0
            .borrow()
16731
0
            .hooks()
16732
0
            .cmd_set_fragment_shading_rate_khr(
16733
0
                command_buffer,
16734
0
                unsafe { p_fragment_size.as_ref() }.unwrap(),
16735
0
                unsafe { combiner_ops.as_ref() }.unwrap(),
16736
0
            );
16737
0
        match layer_result {
16738
0
            LayerResult::Handled(res) => res,
16739
            LayerResult::Unhandled => unsafe {
16740
0
                (dispatch_table.cmd_set_fragment_shading_rate_khr)(
16741
0
                    command_buffer,
16742
0
                    p_fragment_size,
16743
0
                    combiner_ops,
16744
0
                )
16745
            },
16746
        }
16747
0
    }
16748
0
    extern "system" fn wait_for_present_khr(
16749
0
        device: vk::Device,
16750
0
        swapchain: vk::SwapchainKHR,
16751
0
        present_id: u64,
16752
0
        timeout: u64,
16753
0
    ) -> vk::Result {
16754
0
        let global = Self::instance();
16755
0
        // vkWaitForPresentKHR
16756
0
        let device_info = global.get_device_info(device).unwrap();
16757
0
        let dispatch_table = &device_info.dispatch_table.khr_present_wait;
16758
0
        let layer_result = device_info
16759
0
            .customized_info
16760
0
            .borrow()
16761
0
            .hooks()
16762
0
            .wait_for_present_khr(swapchain, present_id, timeout);
16763
0
        match layer_result {
16764
0
            LayerResult::Handled(res) => match res {
16765
0
                Ok(()) => vk::Result::SUCCESS,
16766
0
                Err(e) => e,
16767
            },
16768
            LayerResult::Unhandled => unsafe {
16769
0
                (dispatch_table.wait_for_present_khr)(device, swapchain, present_id, timeout)
16770
            },
16771
        }
16772
0
    }
16773
0
    extern "system" fn create_deferred_operation_khr(
16774
0
        device: vk::Device,
16775
0
        p_allocator: *const vk::AllocationCallbacks,
16776
0
        p_deferred_operation: *mut vk::DeferredOperationKHR,
16777
0
    ) -> vk::Result {
16778
0
        let global = Self::instance();
16779
0
        // vkCreateDeferredOperationKHR
16780
0
        let device_info = global.get_device_info(device).unwrap();
16781
0
        let dispatch_table = &device_info.dispatch_table.khr_deferred_host_operations;
16782
0
        let layer_result = device_info
16783
0
            .customized_info
16784
0
            .borrow()
16785
0
            .hooks()
16786
0
            .create_deferred_operation_khr(unsafe { p_allocator.as_ref() });
16787
0
        match layer_result {
16788
0
            LayerResult::Handled(res) => match res {
16789
0
                Ok(res) => {
16790
0
                    *unsafe { p_deferred_operation.as_mut() }.unwrap() = res;
16791
0
                    vk::Result::SUCCESS
16792
                }
16793
0
                Err(e) => e,
16794
            },
16795
            LayerResult::Unhandled => unsafe {
16796
0
                (dispatch_table.create_deferred_operation_khr)(
16797
0
                    device,
16798
0
                    p_allocator,
16799
0
                    p_deferred_operation,
16800
0
                )
16801
            },
16802
        }
16803
0
    }
16804
0
    extern "system" fn destroy_deferred_operation_khr(
16805
0
        device: vk::Device,
16806
0
        operation: vk::DeferredOperationKHR,
16807
0
        p_allocator: *const vk::AllocationCallbacks,
16808
0
    ) {
16809
0
        let global = Self::instance();
16810
0
        // vkDestroyDeferredOperationKHR
16811
0
        let device_info = global.get_device_info(device).unwrap();
16812
0
        let dispatch_table = &device_info.dispatch_table.khr_deferred_host_operations;
16813
0
        let layer_result = device_info
16814
0
            .customized_info
16815
0
            .borrow()
16816
0
            .hooks()
16817
0
            .destroy_deferred_operation_khr(operation, unsafe { p_allocator.as_ref() });
16818
0
        match layer_result {
16819
0
            LayerResult::Handled(res) => res,
16820
            LayerResult::Unhandled => unsafe {
16821
0
                (dispatch_table.destroy_deferred_operation_khr)(device, operation, p_allocator)
16822
            },
16823
        }
16824
0
    }
16825
0
    extern "system" fn get_deferred_operation_max_concurrency_khr(
16826
0
        device: vk::Device,
16827
0
        operation: vk::DeferredOperationKHR,
16828
0
    ) -> u32 {
16829
0
        let global = Self::instance();
16830
0
        // vkGetDeferredOperationMaxConcurrencyKHR
16831
0
        let device_info = global.get_device_info(device).unwrap();
16832
0
        let dispatch_table = &device_info.dispatch_table.khr_deferred_host_operations;
16833
0
        let layer_result = device_info
16834
0
            .customized_info
16835
0
            .borrow()
16836
0
            .hooks()
16837
0
            .get_deferred_operation_max_concurrency_khr(operation);
16838
0
        match layer_result {
16839
0
            LayerResult::Handled(res) => res,
16840
            LayerResult::Unhandled => unsafe {
16841
0
                (dispatch_table.get_deferred_operation_max_concurrency_khr)(device, operation)
16842
            },
16843
        }
16844
0
    }
16845
0
    extern "system" fn get_deferred_operation_result_khr(
16846
0
        device: vk::Device,
16847
0
        operation: vk::DeferredOperationKHR,
16848
0
    ) -> vk::Result {
16849
0
        let global = Self::instance();
16850
0
        // vkGetDeferredOperationResultKHR
16851
0
        let device_info = global.get_device_info(device).unwrap();
16852
0
        let dispatch_table = &device_info.dispatch_table.khr_deferred_host_operations;
16853
0
        let layer_result = device_info
16854
0
            .customized_info
16855
0
            .borrow()
16856
0
            .hooks()
16857
0
            .get_deferred_operation_result_khr(operation);
16858
0
        match layer_result {
16859
0
            LayerResult::Handled(res) => match res {
16860
0
                Ok(()) => vk::Result::SUCCESS,
16861
0
                Err(e) => e,
16862
            },
16863
            LayerResult::Unhandled => unsafe {
16864
0
                (dispatch_table.get_deferred_operation_result_khr)(device, operation)
16865
            },
16866
        }
16867
0
    }
16868
0
    extern "system" fn deferred_operation_join_khr(
16869
0
        device: vk::Device,
16870
0
        operation: vk::DeferredOperationKHR,
16871
0
    ) -> vk::Result {
16872
0
        let global = Self::instance();
16873
0
        // vkDeferredOperationJoinKHR
16874
0
        let device_info = global.get_device_info(device).unwrap();
16875
0
        let dispatch_table = &device_info.dispatch_table.khr_deferred_host_operations;
16876
0
        let layer_result = device_info
16877
0
            .customized_info
16878
0
            .borrow()
16879
0
            .hooks()
16880
0
            .deferred_operation_join_khr(operation);
16881
0
        match layer_result {
16882
0
            LayerResult::Handled(res) => match res {
16883
0
                Ok(()) => vk::Result::SUCCESS,
16884
0
                Err(e) => e,
16885
            },
16886
            LayerResult::Unhandled => unsafe {
16887
0
                (dispatch_table.deferred_operation_join_khr)(device, operation)
16888
            },
16889
        }
16890
0
    }
16891
0
    extern "system" fn get_pipeline_executable_properties_khr(
16892
0
        device: vk::Device,
16893
0
        p_pipeline_info: *const vk::PipelineInfoKHR,
16894
0
        p_executable_count: *mut u32,
16895
0
        p_properties: *mut vk::PipelineExecutablePropertiesKHR,
16896
0
    ) -> vk::Result {
16897
0
        let global = Self::instance();
16898
0
        // vkGetPipelineExecutablePropertiesKHR
16899
0
        let device_info = global.get_device_info(device).unwrap();
16900
0
        let dispatch_table = &device_info
16901
0
            .dispatch_table
16902
0
            .khr_pipeline_executable_properties;
16903
0
        let layer_result = device_info
16904
0
            .customized_info
16905
0
            .borrow()
16906
0
            .hooks()
16907
0
            .get_pipeline_executable_properties_khr(
16908
0
                unsafe { p_pipeline_info.as_ref() }.unwrap(),
16909
0
                unsafe { ptr_as_uninit_mut(p_executable_count) }.unwrap(),
16910
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_properties, p_executable_count) },
16911
0
            );
16912
0
        match layer_result {
16913
0
            LayerResult::Handled(res) => match res {
16914
0
                Ok(()) => vk::Result::SUCCESS,
16915
0
                Err(e) => e,
16916
            },
16917
            LayerResult::Unhandled => unsafe {
16918
0
                (dispatch_table.get_pipeline_executable_properties_khr)(
16919
0
                    device,
16920
0
                    p_pipeline_info,
16921
0
                    p_executable_count,
16922
0
                    p_properties,
16923
0
                )
16924
            },
16925
        }
16926
0
    }
16927
0
    extern "system" fn get_pipeline_executable_statistics_khr(
16928
0
        device: vk::Device,
16929
0
        p_executable_info: *const vk::PipelineExecutableInfoKHR,
16930
0
        p_statistic_count: *mut u32,
16931
0
        p_statistics: *mut vk::PipelineExecutableStatisticKHR,
16932
0
    ) -> vk::Result {
16933
0
        let global = Self::instance();
16934
0
        // vkGetPipelineExecutableStatisticsKHR
16935
0
        let device_info = global.get_device_info(device).unwrap();
16936
0
        let dispatch_table = &device_info
16937
0
            .dispatch_table
16938
0
            .khr_pipeline_executable_properties;
16939
0
        let layer_result = device_info
16940
0
            .customized_info
16941
0
            .borrow()
16942
0
            .hooks()
16943
0
            .get_pipeline_executable_statistics_khr(
16944
0
                unsafe { p_executable_info.as_ref() }.unwrap(),
16945
0
                unsafe { ptr_as_uninit_mut(p_statistic_count) }.unwrap(),
16946
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_statistics, p_statistic_count) },
16947
0
            );
16948
0
        match layer_result {
16949
0
            LayerResult::Handled(res) => match res {
16950
0
                Ok(()) => vk::Result::SUCCESS,
16951
0
                Err(e) => e,
16952
            },
16953
            LayerResult::Unhandled => unsafe {
16954
0
                (dispatch_table.get_pipeline_executable_statistics_khr)(
16955
0
                    device,
16956
0
                    p_executable_info,
16957
0
                    p_statistic_count,
16958
0
                    p_statistics,
16959
0
                )
16960
            },
16961
        }
16962
0
    }
16963
0
    extern "system" fn get_pipeline_executable_internal_representations_khr(
16964
0
        device: vk::Device,
16965
0
        p_executable_info: *const vk::PipelineExecutableInfoKHR,
16966
0
        p_internal_representation_count: *mut u32,
16967
0
        p_internal_representations: *mut vk::PipelineExecutableInternalRepresentationKHR,
16968
0
    ) -> vk::Result {
16969
0
        let global = Self::instance();
16970
0
        // vkGetPipelineExecutableInternalRepresentationsKHR
16971
0
        let device_info = global.get_device_info(device).unwrap();
16972
0
        let dispatch_table = &device_info
16973
0
            .dispatch_table
16974
0
            .khr_pipeline_executable_properties;
16975
0
        let layer_result = device_info
16976
0
            .customized_info
16977
0
            .borrow()
16978
0
            .hooks()
16979
0
            .get_pipeline_executable_internal_representations_khr(
16980
0
                unsafe { p_executable_info.as_ref() }.unwrap(),
16981
0
                unsafe { ptr_as_uninit_mut(p_internal_representation_count) }.unwrap(),
16982
0
                unsafe {
16983
0
                    maybe_uninit_slice_from_raw_parts_mut(
16984
0
                        p_internal_representations,
16985
0
                        p_internal_representation_count,
16986
0
                    )
16987
0
                },
16988
0
            );
16989
0
        match layer_result {
16990
0
            LayerResult::Handled(res) => match res {
16991
0
                Ok(()) => vk::Result::SUCCESS,
16992
0
                Err(e) => e,
16993
            },
16994
            LayerResult::Unhandled => unsafe {
16995
0
                (dispatch_table.get_pipeline_executable_internal_representations_khr)(
16996
0
                    device,
16997
0
                    p_executable_info,
16998
0
                    p_internal_representation_count,
16999
0
                    p_internal_representations,
17000
0
                )
17001
            },
17002
        }
17003
0
    }
17004
0
    extern "system" fn cmd_encode_video_khr(
17005
0
        command_buffer: vk::CommandBuffer,
17006
0
        p_encode_info: *const vk::VideoEncodeInfoKHR,
17007
0
    ) {
17008
0
        let global = Self::instance();
17009
0
        // vkCmdEncodeVideoKHR
17010
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17011
0
        let dispatch_table = &device_info.dispatch_table.khr_video_encode_queue;
17012
0
        let layer_result = device_info
17013
0
            .customized_info
17014
0
            .borrow()
17015
0
            .hooks()
17016
0
            .cmd_encode_video_khr(command_buffer, unsafe { p_encode_info.as_ref() }.unwrap());
17017
0
        match layer_result {
17018
0
            LayerResult::Handled(res) => res,
17019
            LayerResult::Unhandled => unsafe {
17020
0
                (dispatch_table.cmd_encode_video_khr)(command_buffer, p_encode_info)
17021
            },
17022
        }
17023
0
    }
17024
0
    extern "system" fn cmd_write_buffer_marker2_amd(
17025
0
        command_buffer: vk::CommandBuffer,
17026
0
        stage: vk::PipelineStageFlags2,
17027
0
        dst_buffer: vk::Buffer,
17028
0
        dst_offset: vk::DeviceSize,
17029
0
        marker: u32,
17030
0
    ) {
17031
0
        let global = Self::instance();
17032
0
        // vkCmdWriteBufferMarker2AMD
17033
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17034
0
        let dispatch_table = &device_info.dispatch_table.khr_synchronization2;
17035
0
        let layer_result = device_info
17036
0
            .customized_info
17037
0
            .borrow()
17038
0
            .hooks()
17039
0
            .cmd_write_buffer_marker2_amd(command_buffer, stage, dst_buffer, dst_offset, marker);
17040
0
        match layer_result {
17041
0
            LayerResult::Handled(res) => res,
17042
            LayerResult::Unhandled => unsafe {
17043
0
                (dispatch_table.cmd_write_buffer_marker2_amd)(
17044
0
                    command_buffer,
17045
0
                    stage,
17046
0
                    dst_buffer,
17047
0
                    dst_offset,
17048
0
                    marker,
17049
0
                )
17050
            },
17051
        }
17052
0
    }
17053
0
    extern "system" fn get_queue_checkpoint_data2_nv(
17054
0
        queue: vk::Queue,
17055
0
        p_checkpoint_data_count: *mut u32,
17056
0
        p_checkpoint_data: *mut vk::CheckpointData2NV,
17057
0
    ) {
17058
0
        let global = Self::instance();
17059
0
        // vkGetQueueCheckpointData2NV
17060
0
        let device_info = global.get_device_info(queue).unwrap();
17061
0
        let dispatch_table = &device_info.dispatch_table.khr_synchronization2;
17062
0
        let layer_result = device_info
17063
0
            .customized_info
17064
0
            .borrow()
17065
0
            .hooks()
17066
0
            .get_queue_checkpoint_data2_nv(
17067
0
                queue,
17068
0
                unsafe { ptr_as_uninit_mut(p_checkpoint_data_count) }.unwrap(),
17069
0
                unsafe {
17070
0
                    maybe_uninit_slice_from_raw_parts_mut(
17071
0
                        p_checkpoint_data,
17072
0
                        p_checkpoint_data_count,
17073
0
                    )
17074
0
                },
17075
0
            );
17076
0
        match layer_result {
17077
0
            LayerResult::Handled(res) => res,
17078
            LayerResult::Unhandled => unsafe {
17079
0
                (dispatch_table.get_queue_checkpoint_data2_nv)(
17080
0
                    queue,
17081
0
                    p_checkpoint_data_count,
17082
0
                    p_checkpoint_data,
17083
0
                )
17084
            },
17085
        }
17086
0
    }
17087
0
    extern "system" fn cmd_trace_rays_indirect2_khr(
17088
0
        command_buffer: vk::CommandBuffer,
17089
0
        indirect_device_address: vk::DeviceAddress,
17090
0
    ) {
17091
0
        let global = Self::instance();
17092
0
        // vkCmdTraceRaysIndirect2KHR
17093
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17094
0
        let dispatch_table = &device_info.dispatch_table.khr_ray_tracing_maintenance1;
17095
0
        let layer_result = device_info
17096
0
            .customized_info
17097
0
            .borrow()
17098
0
            .hooks()
17099
0
            .cmd_trace_rays_indirect2_khr(command_buffer, indirect_device_address);
17100
0
        match layer_result {
17101
0
            LayerResult::Handled(res) => res,
17102
            LayerResult::Unhandled => unsafe {
17103
0
                (dispatch_table.cmd_trace_rays_indirect2_khr)(
17104
0
                    command_buffer,
17105
0
                    indirect_device_address,
17106
0
                )
17107
            },
17108
        }
17109
0
    }
17110
0
    extern "system" fn get_swapchain_gralloc_usage_android(
17111
0
        device: vk::Device,
17112
0
        format: vk::Format,
17113
0
        image_usage: vk::ImageUsageFlags,
17114
0
        gralloc_usage: *mut c_int,
17115
0
    ) -> vk::Result {
17116
0
        let global = Self::instance();
17117
0
        // vkGetSwapchainGrallocUsageANDROID
17118
0
        let device_info = global.get_device_info(device).unwrap();
17119
0
        let dispatch_table = &device_info.dispatch_table.android_native_buffer;
17120
0
        let layer_result = device_info
17121
0
            .customized_info
17122
0
            .borrow()
17123
0
            .hooks()
17124
0
            .get_swapchain_gralloc_usage_android(format, image_usage);
17125
0
        match layer_result {
17126
0
            LayerResult::Handled(res) => match res {
17127
0
                Ok(res) => {
17128
0
                    *unsafe { gralloc_usage.as_mut() }.unwrap() = res;
17129
0
                    vk::Result::SUCCESS
17130
                }
17131
0
                Err(e) => e,
17132
            },
17133
            LayerResult::Unhandled => unsafe {
17134
0
                (dispatch_table.get_swapchain_gralloc_usage_android)(
17135
0
                    device,
17136
0
                    format,
17137
0
                    image_usage,
17138
0
                    gralloc_usage,
17139
0
                )
17140
            },
17141
        }
17142
0
    }
17143
0
    extern "system" fn acquire_image_android(
17144
0
        device: vk::Device,
17145
0
        image: vk::Image,
17146
0
        native_fence_fd: c_int,
17147
0
        semaphore: vk::Semaphore,
17148
0
        fence: vk::Fence,
17149
0
    ) -> vk::Result {
17150
0
        let global = Self::instance();
17151
0
        // vkAcquireImageANDROID
17152
0
        let device_info = global.get_device_info(device).unwrap();
17153
0
        let dispatch_table = &device_info.dispatch_table.android_native_buffer;
17154
0
        let layer_result = device_info
17155
0
            .customized_info
17156
0
            .borrow()
17157
0
            .hooks()
17158
0
            .acquire_image_android(image, native_fence_fd, semaphore, fence);
17159
0
        match layer_result {
17160
0
            LayerResult::Handled(res) => match res {
17161
0
                Ok(()) => vk::Result::SUCCESS,
17162
0
                Err(e) => e,
17163
            },
17164
            LayerResult::Unhandled => unsafe {
17165
0
                (dispatch_table.acquire_image_android)(
17166
0
                    device,
17167
0
                    image,
17168
0
                    native_fence_fd,
17169
0
                    semaphore,
17170
0
                    fence,
17171
0
                )
17172
            },
17173
        }
17174
0
    }
17175
0
    extern "system" fn queue_signal_release_image_android(
17176
0
        queue: vk::Queue,
17177
0
        wait_semaphore_count: u32,
17178
0
        p_wait_semaphores: *const vk::Semaphore,
17179
0
        image: vk::Image,
17180
0
        p_native_fence_fd: *mut c_int,
17181
0
    ) -> vk::Result {
17182
0
        let global = Self::instance();
17183
0
        // vkQueueSignalReleaseImageANDROID
17184
0
        let device_info = global.get_device_info(queue).unwrap();
17185
0
        let dispatch_table = &device_info.dispatch_table.android_native_buffer;
17186
0
        let layer_result = device_info
17187
0
            .customized_info
17188
0
            .borrow()
17189
0
            .hooks()
17190
0
            .queue_signal_release_image_android(
17191
0
                queue,
17192
0
                unsafe { slice_from_raw_parts(p_wait_semaphores, wait_semaphore_count) },
17193
0
                image,
17194
0
            );
17195
0
        match layer_result {
17196
0
            LayerResult::Handled(res) => match res {
17197
0
                Ok(res) => {
17198
0
                    *unsafe { p_native_fence_fd.as_mut() }.unwrap() = res;
17199
0
                    vk::Result::SUCCESS
17200
                }
17201
0
                Err(e) => e,
17202
            },
17203
            LayerResult::Unhandled => unsafe {
17204
0
                (dispatch_table.queue_signal_release_image_android)(
17205
0
                    queue,
17206
0
                    wait_semaphore_count,
17207
0
                    p_wait_semaphores,
17208
0
                    image,
17209
0
                    p_native_fence_fd,
17210
0
                )
17211
            },
17212
        }
17213
0
    }
17214
0
    extern "system" fn get_swapchain_gralloc_usage2_android(
17215
0
        device: vk::Device,
17216
0
        format: vk::Format,
17217
0
        image_usage: vk::ImageUsageFlags,
17218
0
        swapchain_image_usage: vk::SwapchainImageUsageFlagsANDROID,
17219
0
        gralloc_consumer_usage: *mut u64,
17220
0
        gralloc_producer_usage: *mut u64,
17221
0
    ) -> vk::Result {
17222
0
        let global = Self::instance();
17223
0
        // vkGetSwapchainGrallocUsage2ANDROID
17224
0
        let device_info = global.get_device_info(device).unwrap();
17225
0
        let dispatch_table = &device_info.dispatch_table.android_native_buffer;
17226
0
        let layer_result = device_info
17227
0
            .customized_info
17228
0
            .borrow()
17229
0
            .hooks()
17230
0
            .get_swapchain_gralloc_usage2_android(
17231
0
                format,
17232
0
                image_usage,
17233
0
                swapchain_image_usage,
17234
0
                unsafe { ptr_as_uninit_mut(gralloc_consumer_usage) }.unwrap(),
17235
0
            );
17236
0
        match layer_result {
17237
0
            LayerResult::Handled(res) => match res {
17238
0
                Ok(res) => {
17239
0
                    *unsafe { gralloc_producer_usage.as_mut() }.unwrap() = res;
17240
0
                    vk::Result::SUCCESS
17241
                }
17242
0
                Err(e) => e,
17243
            },
17244
            LayerResult::Unhandled => unsafe {
17245
0
                (dispatch_table.get_swapchain_gralloc_usage2_android)(
17246
0
                    device,
17247
0
                    format,
17248
0
                    image_usage,
17249
0
                    swapchain_image_usage,
17250
0
                    gralloc_consumer_usage,
17251
0
                    gralloc_producer_usage,
17252
0
                )
17253
            },
17254
        }
17255
0
    }
17256
0
    extern "system" fn debug_marker_set_object_tag_ext(
17257
0
        device: vk::Device,
17258
0
        p_tag_info: *const vk::DebugMarkerObjectTagInfoEXT,
17259
0
    ) -> vk::Result {
17260
0
        let global = Self::instance();
17261
0
        // vkDebugMarkerSetObjectTagEXT
17262
0
        let device_info = global.get_device_info(device).unwrap();
17263
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_marker;
17264
0
        let layer_result = device_info
17265
0
            .customized_info
17266
0
            .borrow()
17267
0
            .hooks()
17268
0
            .debug_marker_set_object_tag_ext(unsafe { p_tag_info.as_ref() }.unwrap());
17269
0
        match layer_result {
17270
0
            LayerResult::Handled(res) => match res {
17271
0
                Ok(()) => vk::Result::SUCCESS,
17272
0
                Err(e) => e,
17273
            },
17274
            LayerResult::Unhandled => unsafe {
17275
0
                (dispatch_table.debug_marker_set_object_tag_ext)(device, p_tag_info)
17276
            },
17277
        }
17278
0
    }
17279
0
    extern "system" fn debug_marker_set_object_name_ext(
17280
0
        device: vk::Device,
17281
0
        p_name_info: *const vk::DebugMarkerObjectNameInfoEXT,
17282
0
    ) -> vk::Result {
17283
0
        let global = Self::instance();
17284
0
        // vkDebugMarkerSetObjectNameEXT
17285
0
        let device_info = global.get_device_info(device).unwrap();
17286
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_marker;
17287
0
        let layer_result = device_info
17288
0
            .customized_info
17289
0
            .borrow()
17290
0
            .hooks()
17291
0
            .debug_marker_set_object_name_ext(unsafe { p_name_info.as_ref() }.unwrap());
17292
0
        match layer_result {
17293
0
            LayerResult::Handled(res) => match res {
17294
0
                Ok(()) => vk::Result::SUCCESS,
17295
0
                Err(e) => e,
17296
            },
17297
            LayerResult::Unhandled => unsafe {
17298
0
                (dispatch_table.debug_marker_set_object_name_ext)(device, p_name_info)
17299
            },
17300
        }
17301
0
    }
17302
0
    extern "system" fn cmd_debug_marker_begin_ext(
17303
0
        command_buffer: vk::CommandBuffer,
17304
0
        p_marker_info: *const vk::DebugMarkerMarkerInfoEXT,
17305
0
    ) {
17306
0
        let global = Self::instance();
17307
0
        // vkCmdDebugMarkerBeginEXT
17308
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17309
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_marker;
17310
0
        let layer_result = device_info
17311
0
            .customized_info
17312
0
            .borrow()
17313
0
            .hooks()
17314
0
            .cmd_debug_marker_begin_ext(command_buffer, unsafe { p_marker_info.as_ref() }.unwrap());
17315
0
        match layer_result {
17316
0
            LayerResult::Handled(res) => res,
17317
            LayerResult::Unhandled => unsafe {
17318
0
                (dispatch_table.cmd_debug_marker_begin_ext)(command_buffer, p_marker_info)
17319
            },
17320
        }
17321
0
    }
17322
0
    extern "system" fn cmd_debug_marker_end_ext(command_buffer: vk::CommandBuffer) {
17323
0
        let global = Self::instance();
17324
0
        // vkCmdDebugMarkerEndEXT
17325
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17326
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_marker;
17327
0
        let layer_result = device_info
17328
0
            .customized_info
17329
0
            .borrow()
17330
0
            .hooks()
17331
0
            .cmd_debug_marker_end_ext(command_buffer);
17332
0
        match layer_result {
17333
0
            LayerResult::Handled(res) => res,
17334
            LayerResult::Unhandled => unsafe {
17335
0
                (dispatch_table.cmd_debug_marker_end_ext)(command_buffer)
17336
            },
17337
        }
17338
0
    }
17339
0
    extern "system" fn cmd_debug_marker_insert_ext(
17340
0
        command_buffer: vk::CommandBuffer,
17341
0
        p_marker_info: *const vk::DebugMarkerMarkerInfoEXT,
17342
0
    ) {
17343
0
        let global = Self::instance();
17344
0
        // vkCmdDebugMarkerInsertEXT
17345
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17346
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_marker;
17347
0
        let layer_result = device_info
17348
0
            .customized_info
17349
0
            .borrow()
17350
0
            .hooks()
17351
0
            .cmd_debug_marker_insert_ext(
17352
0
                command_buffer,
17353
0
                unsafe { p_marker_info.as_ref() }.unwrap(),
17354
0
            );
17355
0
        match layer_result {
17356
0
            LayerResult::Handled(res) => res,
17357
            LayerResult::Unhandled => unsafe {
17358
0
                (dispatch_table.cmd_debug_marker_insert_ext)(command_buffer, p_marker_info)
17359
            },
17360
        }
17361
0
    }
17362
0
    extern "system" fn cmd_bind_transform_feedback_buffers_ext(
17363
0
        command_buffer: vk::CommandBuffer,
17364
0
        first_binding: u32,
17365
0
        binding_count: u32,
17366
0
        p_buffers: *const vk::Buffer,
17367
0
        p_offsets: *const vk::DeviceSize,
17368
0
        p_sizes: *const vk::DeviceSize,
17369
0
    ) {
17370
0
        let global = Self::instance();
17371
0
        // vkCmdBindTransformFeedbackBuffersEXT
17372
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17373
0
        let dispatch_table = &device_info.dispatch_table.ext_transform_feedback;
17374
0
        let layer_result = device_info
17375
0
            .customized_info
17376
0
            .borrow()
17377
0
            .hooks()
17378
0
            .cmd_bind_transform_feedback_buffers_ext(
17379
0
                command_buffer,
17380
0
                first_binding,
17381
0
                unsafe { slice_from_raw_parts(p_buffers, binding_count) },
17382
0
                unsafe { slice_from_raw_parts(p_offsets, binding_count) },
17383
0
                unsafe { maybe_slice_from_raw_parts(p_sizes, binding_count) },
17384
0
            );
17385
0
        match layer_result {
17386
0
            LayerResult::Handled(res) => res,
17387
            LayerResult::Unhandled => unsafe {
17388
0
                (dispatch_table.cmd_bind_transform_feedback_buffers_ext)(
17389
0
                    command_buffer,
17390
0
                    first_binding,
17391
0
                    binding_count,
17392
0
                    p_buffers,
17393
0
                    p_offsets,
17394
0
                    p_sizes,
17395
0
                )
17396
            },
17397
        }
17398
0
    }
17399
0
    extern "system" fn cmd_begin_transform_feedback_ext(
17400
0
        command_buffer: vk::CommandBuffer,
17401
0
        first_counter_buffer: u32,
17402
0
        counter_buffer_count: u32,
17403
0
        p_counter_buffers: *const vk::Buffer,
17404
0
        p_counter_buffer_offsets: *const vk::DeviceSize,
17405
0
    ) {
17406
0
        let global = Self::instance();
17407
0
        // vkCmdBeginTransformFeedbackEXT
17408
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17409
0
        let dispatch_table = &device_info.dispatch_table.ext_transform_feedback;
17410
0
        let layer_result = device_info
17411
0
            .customized_info
17412
0
            .borrow()
17413
0
            .hooks()
17414
0
            .cmd_begin_transform_feedback_ext(
17415
0
                command_buffer,
17416
0
                first_counter_buffer,
17417
0
                unsafe { slice_from_raw_parts(p_counter_buffers, counter_buffer_count) },
17418
0
                unsafe {
17419
0
                    maybe_slice_from_raw_parts(p_counter_buffer_offsets, counter_buffer_count)
17420
0
                },
17421
0
            );
17422
0
        match layer_result {
17423
0
            LayerResult::Handled(res) => res,
17424
            LayerResult::Unhandled => unsafe {
17425
0
                (dispatch_table.cmd_begin_transform_feedback_ext)(
17426
0
                    command_buffer,
17427
0
                    first_counter_buffer,
17428
0
                    counter_buffer_count,
17429
0
                    p_counter_buffers,
17430
0
                    p_counter_buffer_offsets,
17431
0
                )
17432
            },
17433
        }
17434
0
    }
17435
0
    extern "system" fn cmd_end_transform_feedback_ext(
17436
0
        command_buffer: vk::CommandBuffer,
17437
0
        first_counter_buffer: u32,
17438
0
        counter_buffer_count: u32,
17439
0
        p_counter_buffers: *const vk::Buffer,
17440
0
        p_counter_buffer_offsets: *const vk::DeviceSize,
17441
0
    ) {
17442
0
        let global = Self::instance();
17443
0
        // vkCmdEndTransformFeedbackEXT
17444
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17445
0
        let dispatch_table = &device_info.dispatch_table.ext_transform_feedback;
17446
0
        let layer_result = device_info
17447
0
            .customized_info
17448
0
            .borrow()
17449
0
            .hooks()
17450
0
            .cmd_end_transform_feedback_ext(
17451
0
                command_buffer,
17452
0
                first_counter_buffer,
17453
0
                unsafe { slice_from_raw_parts(p_counter_buffers, counter_buffer_count) },
17454
0
                unsafe {
17455
0
                    maybe_slice_from_raw_parts(p_counter_buffer_offsets, counter_buffer_count)
17456
0
                },
17457
0
            );
17458
0
        match layer_result {
17459
0
            LayerResult::Handled(res) => res,
17460
            LayerResult::Unhandled => unsafe {
17461
0
                (dispatch_table.cmd_end_transform_feedback_ext)(
17462
0
                    command_buffer,
17463
0
                    first_counter_buffer,
17464
0
                    counter_buffer_count,
17465
0
                    p_counter_buffers,
17466
0
                    p_counter_buffer_offsets,
17467
0
                )
17468
            },
17469
        }
17470
0
    }
17471
0
    extern "system" fn cmd_begin_query_indexed_ext(
17472
0
        command_buffer: vk::CommandBuffer,
17473
0
        query_pool: vk::QueryPool,
17474
0
        query: u32,
17475
0
        flags: vk::QueryControlFlags,
17476
0
        index: u32,
17477
0
    ) {
17478
0
        let global = Self::instance();
17479
0
        // vkCmdBeginQueryIndexedEXT
17480
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17481
0
        let dispatch_table = &device_info.dispatch_table.ext_transform_feedback;
17482
0
        let layer_result = device_info
17483
0
            .customized_info
17484
0
            .borrow()
17485
0
            .hooks()
17486
0
            .cmd_begin_query_indexed_ext(command_buffer, query_pool, query, flags, index);
17487
0
        match layer_result {
17488
0
            LayerResult::Handled(res) => res,
17489
            LayerResult::Unhandled => unsafe {
17490
0
                (dispatch_table.cmd_begin_query_indexed_ext)(
17491
0
                    command_buffer,
17492
0
                    query_pool,
17493
0
                    query,
17494
0
                    flags,
17495
0
                    index,
17496
0
                )
17497
            },
17498
        }
17499
0
    }
17500
0
    extern "system" fn cmd_end_query_indexed_ext(
17501
0
        command_buffer: vk::CommandBuffer,
17502
0
        query_pool: vk::QueryPool,
17503
0
        query: u32,
17504
0
        index: u32,
17505
0
    ) {
17506
0
        let global = Self::instance();
17507
0
        // vkCmdEndQueryIndexedEXT
17508
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17509
0
        let dispatch_table = &device_info.dispatch_table.ext_transform_feedback;
17510
0
        let layer_result = device_info
17511
0
            .customized_info
17512
0
            .borrow()
17513
0
            .hooks()
17514
0
            .cmd_end_query_indexed_ext(command_buffer, query_pool, query, index);
17515
0
        match layer_result {
17516
0
            LayerResult::Handled(res) => res,
17517
            LayerResult::Unhandled => unsafe {
17518
0
                (dispatch_table.cmd_end_query_indexed_ext)(command_buffer, query_pool, query, index)
17519
            },
17520
        }
17521
0
    }
17522
0
    extern "system" fn cmd_draw_indirect_byte_count_ext(
17523
0
        command_buffer: vk::CommandBuffer,
17524
0
        instance_count: u32,
17525
0
        first_instance: u32,
17526
0
        counter_buffer: vk::Buffer,
17527
0
        counter_buffer_offset: vk::DeviceSize,
17528
0
        counter_offset: u32,
17529
0
        vertex_stride: u32,
17530
0
    ) {
17531
0
        let global = Self::instance();
17532
0
        // vkCmdDrawIndirectByteCountEXT
17533
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17534
0
        let dispatch_table = &device_info.dispatch_table.ext_transform_feedback;
17535
0
        let layer_result = device_info
17536
0
            .customized_info
17537
0
            .borrow()
17538
0
            .hooks()
17539
0
            .cmd_draw_indirect_byte_count_ext(
17540
0
                command_buffer,
17541
0
                instance_count,
17542
0
                first_instance,
17543
0
                counter_buffer,
17544
0
                counter_buffer_offset,
17545
0
                counter_offset,
17546
0
                vertex_stride,
17547
0
            );
17548
0
        match layer_result {
17549
0
            LayerResult::Handled(res) => res,
17550
            LayerResult::Unhandled => unsafe {
17551
0
                (dispatch_table.cmd_draw_indirect_byte_count_ext)(
17552
0
                    command_buffer,
17553
0
                    instance_count,
17554
0
                    first_instance,
17555
0
                    counter_buffer,
17556
0
                    counter_buffer_offset,
17557
0
                    counter_offset,
17558
0
                    vertex_stride,
17559
0
                )
17560
            },
17561
        }
17562
0
    }
17563
0
    extern "system" fn create_cu_module_nvx(
17564
0
        device: vk::Device,
17565
0
        p_create_info: *const vk::CuModuleCreateInfoNVX,
17566
0
        p_allocator: *const vk::AllocationCallbacks,
17567
0
        p_module: *mut vk::CuModuleNVX,
17568
0
    ) -> vk::Result {
17569
0
        let global = Self::instance();
17570
0
        // vkCreateCuModuleNVX
17571
0
        let device_info = global.get_device_info(device).unwrap();
17572
0
        let dispatch_table = &device_info.dispatch_table.nvx_binary_import;
17573
0
        let layer_result = device_info
17574
0
            .customized_info
17575
0
            .borrow()
17576
0
            .hooks()
17577
0
            .create_cu_module_nvx(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
17578
0
                p_allocator.as_ref()
17579
0
            });
17580
0
        match layer_result {
17581
0
            LayerResult::Handled(res) => match res {
17582
0
                Ok(res) => {
17583
0
                    *unsafe { p_module.as_mut() }.unwrap() = res;
17584
0
                    vk::Result::SUCCESS
17585
                }
17586
0
                Err(e) => e,
17587
            },
17588
            LayerResult::Unhandled => unsafe {
17589
0
                (dispatch_table.create_cu_module_nvx)(device, p_create_info, p_allocator, p_module)
17590
            },
17591
        }
17592
0
    }
17593
0
    extern "system" fn create_cu_function_nvx(
17594
0
        device: vk::Device,
17595
0
        p_create_info: *const vk::CuFunctionCreateInfoNVX,
17596
0
        p_allocator: *const vk::AllocationCallbacks,
17597
0
        p_function: *mut vk::CuFunctionNVX,
17598
0
    ) -> vk::Result {
17599
0
        let global = Self::instance();
17600
0
        // vkCreateCuFunctionNVX
17601
0
        let device_info = global.get_device_info(device).unwrap();
17602
0
        let dispatch_table = &device_info.dispatch_table.nvx_binary_import;
17603
0
        let layer_result = device_info
17604
0
            .customized_info
17605
0
            .borrow()
17606
0
            .hooks()
17607
0
            .create_cu_function_nvx(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
17608
0
                p_allocator.as_ref()
17609
0
            });
17610
0
        match layer_result {
17611
0
            LayerResult::Handled(res) => match res {
17612
0
                Ok(res) => {
17613
0
                    *unsafe { p_function.as_mut() }.unwrap() = res;
17614
0
                    vk::Result::SUCCESS
17615
                }
17616
0
                Err(e) => e,
17617
            },
17618
            LayerResult::Unhandled => unsafe {
17619
0
                (dispatch_table.create_cu_function_nvx)(
17620
0
                    device,
17621
0
                    p_create_info,
17622
0
                    p_allocator,
17623
0
                    p_function,
17624
0
                )
17625
            },
17626
        }
17627
0
    }
17628
0
    extern "system" fn destroy_cu_module_nvx(
17629
0
        device: vk::Device,
17630
0
        module: vk::CuModuleNVX,
17631
0
        p_allocator: *const vk::AllocationCallbacks,
17632
0
    ) {
17633
0
        let global = Self::instance();
17634
0
        // vkDestroyCuModuleNVX
17635
0
        let device_info = global.get_device_info(device).unwrap();
17636
0
        let dispatch_table = &device_info.dispatch_table.nvx_binary_import;
17637
0
        let layer_result = device_info
17638
0
            .customized_info
17639
0
            .borrow()
17640
0
            .hooks()
17641
0
            .destroy_cu_module_nvx(module, unsafe { p_allocator.as_ref() });
17642
0
        match layer_result {
17643
0
            LayerResult::Handled(res) => res,
17644
            LayerResult::Unhandled => unsafe {
17645
0
                (dispatch_table.destroy_cu_module_nvx)(device, module, p_allocator)
17646
            },
17647
        }
17648
0
    }
17649
0
    extern "system" fn destroy_cu_function_nvx(
17650
0
        device: vk::Device,
17651
0
        function: vk::CuFunctionNVX,
17652
0
        p_allocator: *const vk::AllocationCallbacks,
17653
0
    ) {
17654
0
        let global = Self::instance();
17655
0
        // vkDestroyCuFunctionNVX
17656
0
        let device_info = global.get_device_info(device).unwrap();
17657
0
        let dispatch_table = &device_info.dispatch_table.nvx_binary_import;
17658
0
        let layer_result = device_info
17659
0
            .customized_info
17660
0
            .borrow()
17661
0
            .hooks()
17662
0
            .destroy_cu_function_nvx(function, unsafe { p_allocator.as_ref() });
17663
0
        match layer_result {
17664
0
            LayerResult::Handled(res) => res,
17665
            LayerResult::Unhandled => unsafe {
17666
0
                (dispatch_table.destroy_cu_function_nvx)(device, function, p_allocator)
17667
            },
17668
        }
17669
0
    }
17670
0
    extern "system" fn cmd_cu_launch_kernel_nvx(
17671
0
        command_buffer: vk::CommandBuffer,
17672
0
        p_launch_info: *const vk::CuLaunchInfoNVX,
17673
0
    ) {
17674
0
        let global = Self::instance();
17675
0
        // vkCmdCuLaunchKernelNVX
17676
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17677
0
        let dispatch_table = &device_info.dispatch_table.nvx_binary_import;
17678
0
        let layer_result = device_info
17679
0
            .customized_info
17680
0
            .borrow()
17681
0
            .hooks()
17682
0
            .cmd_cu_launch_kernel_nvx(command_buffer, unsafe { p_launch_info.as_ref() }.unwrap());
17683
0
        match layer_result {
17684
0
            LayerResult::Handled(res) => res,
17685
            LayerResult::Unhandled => unsafe {
17686
0
                (dispatch_table.cmd_cu_launch_kernel_nvx)(command_buffer, p_launch_info)
17687
            },
17688
        }
17689
0
    }
17690
0
    extern "system" fn get_image_view_handle_nvx(
17691
0
        device: vk::Device,
17692
0
        p_info: *const vk::ImageViewHandleInfoNVX,
17693
0
    ) -> u32 {
17694
0
        let global = Self::instance();
17695
0
        // vkGetImageViewHandleNVX
17696
0
        let device_info = global.get_device_info(device).unwrap();
17697
0
        let dispatch_table = &device_info.dispatch_table.nvx_image_view_handle;
17698
0
        let layer_result = device_info
17699
0
            .customized_info
17700
0
            .borrow()
17701
0
            .hooks()
17702
0
            .get_image_view_handle_nvx(unsafe { p_info.as_ref() }.unwrap());
17703
0
        match layer_result {
17704
0
            LayerResult::Handled(res) => res,
17705
            LayerResult::Unhandled => unsafe {
17706
0
                (dispatch_table.get_image_view_handle_nvx)(device, p_info)
17707
            },
17708
        }
17709
0
    }
17710
0
    extern "system" fn get_image_view_address_nvx(
17711
0
        device: vk::Device,
17712
0
        image_view: vk::ImageView,
17713
0
        p_properties: *mut vk::ImageViewAddressPropertiesNVX,
17714
0
    ) -> vk::Result {
17715
0
        let global = Self::instance();
17716
0
        // vkGetImageViewAddressNVX
17717
0
        let device_info = global.get_device_info(device).unwrap();
17718
0
        let dispatch_table = &device_info.dispatch_table.nvx_image_view_handle;
17719
0
        let layer_result = device_info
17720
0
            .customized_info
17721
0
            .borrow()
17722
0
            .hooks()
17723
0
            .get_image_view_address_nvx(
17724
0
                image_view,
17725
0
                unsafe { ptr_as_uninit_mut(p_properties) }.unwrap(),
17726
0
            );
17727
0
        match layer_result {
17728
0
            LayerResult::Handled(res) => match res {
17729
0
                Ok(()) => vk::Result::SUCCESS,
17730
0
                Err(e) => e,
17731
            },
17732
            LayerResult::Unhandled => unsafe {
17733
0
                (dispatch_table.get_image_view_address_nvx)(device, image_view, p_properties)
17734
            },
17735
        }
17736
0
    }
17737
0
    extern "system" fn get_shader_info_amd(
17738
0
        device: vk::Device,
17739
0
        pipeline: vk::Pipeline,
17740
0
        shader_stage: vk::ShaderStageFlags,
17741
0
        info_type: vk::ShaderInfoTypeAMD,
17742
0
        p_info_size: *mut usize,
17743
0
        p_info: *mut c_void,
17744
0
    ) -> vk::Result {
17745
0
        let global = Self::instance();
17746
0
        // vkGetShaderInfoAMD
17747
0
        let device_info = global.get_device_info(device).unwrap();
17748
0
        let dispatch_table = &device_info.dispatch_table.amd_shader_info;
17749
0
        let layer_result = device_info
17750
0
            .customized_info
17751
0
            .borrow()
17752
0
            .hooks()
17753
0
            .get_shader_info_amd(
17754
0
                pipeline,
17755
0
                shader_stage,
17756
0
                info_type,
17757
0
                unsafe { ptr_as_uninit_mut(p_info_size) }.unwrap(),
17758
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_info as *mut u8, p_info_size) },
17759
0
            );
17760
0
        match layer_result {
17761
0
            LayerResult::Handled(res) => match res {
17762
0
                Ok(()) => vk::Result::SUCCESS,
17763
0
                Err(e) => e,
17764
            },
17765
            LayerResult::Unhandled => unsafe {
17766
0
                (dispatch_table.get_shader_info_amd)(
17767
0
                    device,
17768
0
                    pipeline,
17769
0
                    shader_stage,
17770
0
                    info_type,
17771
0
                    p_info_size,
17772
0
                    p_info,
17773
0
                )
17774
            },
17775
        }
17776
0
    }
17777
0
    extern "system" fn get_memory_win32_handle_nv(
17778
0
        device: vk::Device,
17779
0
        memory: vk::DeviceMemory,
17780
0
        handle_type: vk::ExternalMemoryHandleTypeFlagsNV,
17781
0
        p_handle: *mut vk::HANDLE,
17782
0
    ) -> vk::Result {
17783
0
        let global = Self::instance();
17784
0
        // vkGetMemoryWin32HandleNV
17785
0
        let device_info = global.get_device_info(device).unwrap();
17786
0
        let dispatch_table = &device_info.dispatch_table.nv_external_memory_win32;
17787
0
        let layer_result = device_info
17788
0
            .customized_info
17789
0
            .borrow()
17790
0
            .hooks()
17791
0
            .get_memory_win32_handle_nv(memory, handle_type);
17792
0
        match layer_result {
17793
0
            LayerResult::Handled(res) => match res {
17794
0
                Ok(res) => {
17795
0
                    *unsafe { p_handle.as_mut() }.unwrap() = res;
17796
0
                    vk::Result::SUCCESS
17797
                }
17798
0
                Err(e) => e,
17799
            },
17800
            LayerResult::Unhandled => unsafe {
17801
0
                (dispatch_table.get_memory_win32_handle_nv)(device, memory, handle_type, p_handle)
17802
            },
17803
        }
17804
0
    }
17805
0
    extern "system" fn cmd_begin_conditional_rendering_ext(
17806
0
        command_buffer: vk::CommandBuffer,
17807
0
        p_conditional_rendering_begin: *const vk::ConditionalRenderingBeginInfoEXT,
17808
0
    ) {
17809
0
        let global = Self::instance();
17810
0
        // vkCmdBeginConditionalRenderingEXT
17811
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17812
0
        let dispatch_table = &device_info.dispatch_table.ext_conditional_rendering;
17813
0
        let layer_result = device_info
17814
0
            .customized_info
17815
0
            .borrow()
17816
0
            .hooks()
17817
0
            .cmd_begin_conditional_rendering_ext(
17818
0
                command_buffer,
17819
0
                unsafe { p_conditional_rendering_begin.as_ref() }.unwrap(),
17820
0
            );
17821
0
        match layer_result {
17822
0
            LayerResult::Handled(res) => res,
17823
            LayerResult::Unhandled => unsafe {
17824
0
                (dispatch_table.cmd_begin_conditional_rendering_ext)(
17825
0
                    command_buffer,
17826
0
                    p_conditional_rendering_begin,
17827
0
                )
17828
            },
17829
        }
17830
0
    }
17831
0
    extern "system" fn cmd_end_conditional_rendering_ext(command_buffer: vk::CommandBuffer) {
17832
0
        let global = Self::instance();
17833
0
        // vkCmdEndConditionalRenderingEXT
17834
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17835
0
        let dispatch_table = &device_info.dispatch_table.ext_conditional_rendering;
17836
0
        let layer_result = device_info
17837
0
            .customized_info
17838
0
            .borrow()
17839
0
            .hooks()
17840
0
            .cmd_end_conditional_rendering_ext(command_buffer);
17841
0
        match layer_result {
17842
0
            LayerResult::Handled(res) => res,
17843
            LayerResult::Unhandled => unsafe {
17844
0
                (dispatch_table.cmd_end_conditional_rendering_ext)(command_buffer)
17845
            },
17846
        }
17847
0
    }
17848
0
    extern "system" fn cmd_set_viewport_w_scaling_nv(
17849
0
        command_buffer: vk::CommandBuffer,
17850
0
        first_viewport: u32,
17851
0
        viewport_count: u32,
17852
0
        p_viewport_w_scalings: *const vk::ViewportWScalingNV,
17853
0
    ) {
17854
0
        let global = Self::instance();
17855
0
        // vkCmdSetViewportWScalingNV
17856
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17857
0
        let dispatch_table = &device_info.dispatch_table.nv_clip_space_w_scaling;
17858
0
        let layer_result = device_info
17859
0
            .customized_info
17860
0
            .borrow()
17861
0
            .hooks()
17862
0
            .cmd_set_viewport_w_scaling_nv(command_buffer, first_viewport, unsafe {
17863
0
                slice_from_raw_parts(p_viewport_w_scalings, viewport_count)
17864
0
            });
17865
0
        match layer_result {
17866
0
            LayerResult::Handled(res) => res,
17867
            LayerResult::Unhandled => unsafe {
17868
0
                (dispatch_table.cmd_set_viewport_w_scaling_nv)(
17869
0
                    command_buffer,
17870
0
                    first_viewport,
17871
0
                    viewport_count,
17872
0
                    p_viewport_w_scalings,
17873
0
                )
17874
            },
17875
        }
17876
0
    }
17877
0
    extern "system" fn display_power_control_ext(
17878
0
        device: vk::Device,
17879
0
        display: vk::DisplayKHR,
17880
0
        p_display_power_info: *const vk::DisplayPowerInfoEXT,
17881
0
    ) -> vk::Result {
17882
0
        let global = Self::instance();
17883
0
        // vkDisplayPowerControlEXT
17884
0
        let device_info = global.get_device_info(device).unwrap();
17885
0
        let dispatch_table = &device_info.dispatch_table.ext_display_control;
17886
0
        let layer_result = device_info
17887
0
            .customized_info
17888
0
            .borrow()
17889
0
            .hooks()
17890
0
            .display_power_control_ext(display, unsafe { p_display_power_info.as_ref() }.unwrap());
17891
0
        match layer_result {
17892
0
            LayerResult::Handled(res) => match res {
17893
0
                Ok(()) => vk::Result::SUCCESS,
17894
0
                Err(e) => e,
17895
            },
17896
            LayerResult::Unhandled => unsafe {
17897
0
                (dispatch_table.display_power_control_ext)(device, display, p_display_power_info)
17898
            },
17899
        }
17900
0
    }
17901
0
    extern "system" fn register_device_event_ext(
17902
0
        device: vk::Device,
17903
0
        p_device_event_info: *const vk::DeviceEventInfoEXT,
17904
0
        p_allocator: *const vk::AllocationCallbacks,
17905
0
        p_fence: *mut vk::Fence,
17906
0
    ) -> vk::Result {
17907
0
        let global = Self::instance();
17908
0
        // vkRegisterDeviceEventEXT
17909
0
        let device_info = global.get_device_info(device).unwrap();
17910
0
        let dispatch_table = &device_info.dispatch_table.ext_display_control;
17911
0
        let layer_result = device_info
17912
0
            .customized_info
17913
0
            .borrow()
17914
0
            .hooks()
17915
0
            .register_device_event_ext(unsafe { p_device_event_info.as_ref() }.unwrap(), unsafe {
17916
0
                p_allocator.as_ref()
17917
0
            });
17918
0
        match layer_result {
17919
0
            LayerResult::Handled(res) => match res {
17920
0
                Ok(res) => {
17921
0
                    *unsafe { p_fence.as_mut() }.unwrap() = res;
17922
0
                    vk::Result::SUCCESS
17923
                }
17924
0
                Err(e) => e,
17925
            },
17926
            LayerResult::Unhandled => unsafe {
17927
0
                (dispatch_table.register_device_event_ext)(
17928
0
                    device,
17929
0
                    p_device_event_info,
17930
0
                    p_allocator,
17931
0
                    p_fence,
17932
0
                )
17933
            },
17934
        }
17935
0
    }
17936
0
    extern "system" fn register_display_event_ext(
17937
0
        device: vk::Device,
17938
0
        display: vk::DisplayKHR,
17939
0
        p_display_event_info: *const vk::DisplayEventInfoEXT,
17940
0
        p_allocator: *const vk::AllocationCallbacks,
17941
0
        p_fence: *mut vk::Fence,
17942
0
    ) -> vk::Result {
17943
0
        let global = Self::instance();
17944
0
        // vkRegisterDisplayEventEXT
17945
0
        let device_info = global.get_device_info(device).unwrap();
17946
0
        let dispatch_table = &device_info.dispatch_table.ext_display_control;
17947
0
        let layer_result = device_info
17948
0
            .customized_info
17949
0
            .borrow()
17950
0
            .hooks()
17951
0
            .register_display_event_ext(
17952
0
                display,
17953
0
                unsafe { p_display_event_info.as_ref() }.unwrap(),
17954
0
                unsafe { p_allocator.as_ref() },
17955
0
            );
17956
0
        match layer_result {
17957
0
            LayerResult::Handled(res) => match res {
17958
0
                Ok(res) => {
17959
0
                    *unsafe { p_fence.as_mut() }.unwrap() = res;
17960
0
                    vk::Result::SUCCESS
17961
                }
17962
0
                Err(e) => e,
17963
            },
17964
            LayerResult::Unhandled => unsafe {
17965
0
                (dispatch_table.register_display_event_ext)(
17966
0
                    device,
17967
0
                    display,
17968
0
                    p_display_event_info,
17969
0
                    p_allocator,
17970
0
                    p_fence,
17971
0
                )
17972
            },
17973
        }
17974
0
    }
17975
0
    extern "system" fn get_swapchain_counter_ext(
17976
0
        device: vk::Device,
17977
0
        swapchain: vk::SwapchainKHR,
17978
0
        counter: vk::SurfaceCounterFlagsEXT,
17979
0
        p_counter_value: *mut u64,
17980
0
    ) -> vk::Result {
17981
0
        let global = Self::instance();
17982
0
        // vkGetSwapchainCounterEXT
17983
0
        let device_info = global.get_device_info(device).unwrap();
17984
0
        let dispatch_table = &device_info.dispatch_table.ext_display_control;
17985
0
        let layer_result = device_info
17986
0
            .customized_info
17987
0
            .borrow()
17988
0
            .hooks()
17989
0
            .get_swapchain_counter_ext(swapchain, counter);
17990
0
        match layer_result {
17991
0
            LayerResult::Handled(res) => match res {
17992
0
                Ok(res) => {
17993
0
                    *unsafe { p_counter_value.as_mut() }.unwrap() = res;
17994
0
                    vk::Result::SUCCESS
17995
                }
17996
0
                Err(e) => e,
17997
            },
17998
            LayerResult::Unhandled => unsafe {
17999
0
                (dispatch_table.get_swapchain_counter_ext)(
18000
0
                    device,
18001
0
                    swapchain,
18002
0
                    counter,
18003
0
                    p_counter_value,
18004
0
                )
18005
            },
18006
        }
18007
0
    }
18008
0
    extern "system" fn get_refresh_cycle_duration_google(
18009
0
        device: vk::Device,
18010
0
        swapchain: vk::SwapchainKHR,
18011
0
        p_display_timing_properties: *mut vk::RefreshCycleDurationGOOGLE,
18012
0
    ) -> vk::Result {
18013
0
        let global = Self::instance();
18014
0
        // vkGetRefreshCycleDurationGOOGLE
18015
0
        let device_info = global.get_device_info(device).unwrap();
18016
0
        let dispatch_table = &device_info.dispatch_table.google_display_timing;
18017
0
        let layer_result = device_info
18018
0
            .customized_info
18019
0
            .borrow()
18020
0
            .hooks()
18021
0
            .get_refresh_cycle_duration_google(
18022
0
                swapchain,
18023
0
                unsafe { ptr_as_uninit_mut(p_display_timing_properties) }.unwrap(),
18024
0
            );
18025
0
        match layer_result {
18026
0
            LayerResult::Handled(res) => match res {
18027
0
                Ok(()) => vk::Result::SUCCESS,
18028
0
                Err(e) => e,
18029
            },
18030
            LayerResult::Unhandled => unsafe {
18031
0
                (dispatch_table.get_refresh_cycle_duration_google)(
18032
0
                    device,
18033
0
                    swapchain,
18034
0
                    p_display_timing_properties,
18035
0
                )
18036
            },
18037
        }
18038
0
    }
18039
0
    extern "system" fn get_past_presentation_timing_google(
18040
0
        device: vk::Device,
18041
0
        swapchain: vk::SwapchainKHR,
18042
0
        p_presentation_timing_count: *mut u32,
18043
0
        p_presentation_timings: *mut vk::PastPresentationTimingGOOGLE,
18044
0
    ) -> vk::Result {
18045
0
        let global = Self::instance();
18046
0
        // vkGetPastPresentationTimingGOOGLE
18047
0
        let device_info = global.get_device_info(device).unwrap();
18048
0
        let dispatch_table = &device_info.dispatch_table.google_display_timing;
18049
0
        let layer_result = device_info
18050
0
            .customized_info
18051
0
            .borrow()
18052
0
            .hooks()
18053
0
            .get_past_presentation_timing_google(
18054
0
                swapchain,
18055
0
                unsafe { ptr_as_uninit_mut(p_presentation_timing_count) }.unwrap(),
18056
0
                unsafe {
18057
0
                    maybe_uninit_slice_from_raw_parts_mut(
18058
0
                        p_presentation_timings,
18059
0
                        p_presentation_timing_count,
18060
0
                    )
18061
0
                },
18062
0
            );
18063
0
        match layer_result {
18064
0
            LayerResult::Handled(res) => match res {
18065
0
                Ok(()) => vk::Result::SUCCESS,
18066
0
                Err(e) => e,
18067
            },
18068
            LayerResult::Unhandled => unsafe {
18069
0
                (dispatch_table.get_past_presentation_timing_google)(
18070
0
                    device,
18071
0
                    swapchain,
18072
0
                    p_presentation_timing_count,
18073
0
                    p_presentation_timings,
18074
0
                )
18075
            },
18076
        }
18077
0
    }
18078
0
    extern "system" fn cmd_set_discard_rectangle_ext(
18079
0
        command_buffer: vk::CommandBuffer,
18080
0
        first_discard_rectangle: u32,
18081
0
        discard_rectangle_count: u32,
18082
0
        p_discard_rectangles: *const vk::Rect2D,
18083
0
    ) {
18084
0
        let global = Self::instance();
18085
0
        // vkCmdSetDiscardRectangleEXT
18086
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18087
0
        let dispatch_table = &device_info.dispatch_table.ext_discard_rectangles;
18088
0
        let layer_result = device_info
18089
0
            .customized_info
18090
0
            .borrow()
18091
0
            .hooks()
18092
0
            .cmd_set_discard_rectangle_ext(command_buffer, first_discard_rectangle, unsafe {
18093
0
                slice_from_raw_parts(p_discard_rectangles, discard_rectangle_count)
18094
0
            });
18095
0
        match layer_result {
18096
0
            LayerResult::Handled(res) => res,
18097
            LayerResult::Unhandled => unsafe {
18098
0
                (dispatch_table.cmd_set_discard_rectangle_ext)(
18099
0
                    command_buffer,
18100
0
                    first_discard_rectangle,
18101
0
                    discard_rectangle_count,
18102
0
                    p_discard_rectangles,
18103
0
                )
18104
            },
18105
        }
18106
0
    }
18107
0
    extern "system" fn set_hdr_metadata_ext(
18108
0
        device: vk::Device,
18109
0
        swapchain_count: u32,
18110
0
        p_swapchains: *const vk::SwapchainKHR,
18111
0
        p_metadata: *const vk::HdrMetadataEXT,
18112
0
    ) {
18113
0
        let global = Self::instance();
18114
0
        // vkSetHdrMetadataEXT
18115
0
        let device_info = global.get_device_info(device).unwrap();
18116
0
        let dispatch_table = &device_info.dispatch_table.ext_hdr_metadata;
18117
0
        let layer_result = device_info
18118
0
            .customized_info
18119
0
            .borrow()
18120
0
            .hooks()
18121
0
            .set_hdr_metadata_ext(
18122
0
                unsafe { slice_from_raw_parts(p_swapchains, swapchain_count) },
18123
0
                unsafe { slice_from_raw_parts(p_metadata, swapchain_count) },
18124
0
            );
18125
0
        match layer_result {
18126
0
            LayerResult::Handled(res) => res,
18127
            LayerResult::Unhandled => unsafe {
18128
0
                (dispatch_table.set_hdr_metadata_ext)(
18129
0
                    device,
18130
0
                    swapchain_count,
18131
0
                    p_swapchains,
18132
0
                    p_metadata,
18133
0
                )
18134
            },
18135
        }
18136
0
    }
18137
0
    extern "system" fn set_debug_utils_object_name_ext(
18138
0
        device: vk::Device,
18139
0
        p_name_info: *const vk::DebugUtilsObjectNameInfoEXT,
18140
0
    ) -> vk::Result {
18141
0
        let global = Self::instance();
18142
0
        // vkSetDebugUtilsObjectNameEXT
18143
0
        let device_info = global.get_device_info(device).unwrap();
18144
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_utils;
18145
0
        let layer_result = device_info
18146
0
            .customized_info
18147
0
            .borrow()
18148
0
            .hooks()
18149
0
            .set_debug_utils_object_name_ext(unsafe { p_name_info.as_ref() }.unwrap());
18150
0
        match layer_result {
18151
0
            LayerResult::Handled(res) => match res {
18152
0
                Ok(()) => vk::Result::SUCCESS,
18153
0
                Err(e) => e,
18154
            },
18155
            LayerResult::Unhandled => unsafe {
18156
0
                (dispatch_table.set_debug_utils_object_name_ext)(device, p_name_info)
18157
            },
18158
        }
18159
0
    }
18160
0
    extern "system" fn set_debug_utils_object_tag_ext(
18161
0
        device: vk::Device,
18162
0
        p_tag_info: *const vk::DebugUtilsObjectTagInfoEXT,
18163
0
    ) -> vk::Result {
18164
0
        let global = Self::instance();
18165
0
        // vkSetDebugUtilsObjectTagEXT
18166
0
        let device_info = global.get_device_info(device).unwrap();
18167
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_utils;
18168
0
        let layer_result = device_info
18169
0
            .customized_info
18170
0
            .borrow()
18171
0
            .hooks()
18172
0
            .set_debug_utils_object_tag_ext(unsafe { p_tag_info.as_ref() }.unwrap());
18173
0
        match layer_result {
18174
0
            LayerResult::Handled(res) => match res {
18175
0
                Ok(()) => vk::Result::SUCCESS,
18176
0
                Err(e) => e,
18177
            },
18178
            LayerResult::Unhandled => unsafe {
18179
0
                (dispatch_table.set_debug_utils_object_tag_ext)(device, p_tag_info)
18180
            },
18181
        }
18182
0
    }
18183
0
    extern "system" fn queue_begin_debug_utils_label_ext(
18184
0
        queue: vk::Queue,
18185
0
        p_label_info: *const vk::DebugUtilsLabelEXT,
18186
0
    ) {
18187
0
        let global = Self::instance();
18188
0
        // vkQueueBeginDebugUtilsLabelEXT
18189
0
        let device_info = global.get_device_info(queue).unwrap();
18190
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_utils;
18191
0
        let layer_result = device_info
18192
0
            .customized_info
18193
0
            .borrow()
18194
0
            .hooks()
18195
0
            .queue_begin_debug_utils_label_ext(queue, unsafe { p_label_info.as_ref() }.unwrap());
18196
0
        match layer_result {
18197
0
            LayerResult::Handled(res) => res,
18198
            LayerResult::Unhandled => unsafe {
18199
0
                (dispatch_table.queue_begin_debug_utils_label_ext)(queue, p_label_info)
18200
            },
18201
        }
18202
0
    }
18203
0
    extern "system" fn queue_end_debug_utils_label_ext(queue: vk::Queue) {
18204
0
        let global = Self::instance();
18205
0
        // vkQueueEndDebugUtilsLabelEXT
18206
0
        let device_info = global.get_device_info(queue).unwrap();
18207
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_utils;
18208
0
        let layer_result = device_info
18209
0
            .customized_info
18210
0
            .borrow()
18211
0
            .hooks()
18212
0
            .queue_end_debug_utils_label_ext(queue);
18213
0
        match layer_result {
18214
0
            LayerResult::Handled(res) => res,
18215
            LayerResult::Unhandled => unsafe {
18216
0
                (dispatch_table.queue_end_debug_utils_label_ext)(queue)
18217
            },
18218
        }
18219
0
    }
18220
0
    extern "system" fn queue_insert_debug_utils_label_ext(
18221
0
        queue: vk::Queue,
18222
0
        p_label_info: *const vk::DebugUtilsLabelEXT,
18223
0
    ) {
18224
0
        let global = Self::instance();
18225
0
        // vkQueueInsertDebugUtilsLabelEXT
18226
0
        let device_info = global.get_device_info(queue).unwrap();
18227
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_utils;
18228
0
        let layer_result = device_info
18229
0
            .customized_info
18230
0
            .borrow()
18231
0
            .hooks()
18232
0
            .queue_insert_debug_utils_label_ext(queue, unsafe { p_label_info.as_ref() }.unwrap());
18233
0
        match layer_result {
18234
0
            LayerResult::Handled(res) => res,
18235
            LayerResult::Unhandled => unsafe {
18236
0
                (dispatch_table.queue_insert_debug_utils_label_ext)(queue, p_label_info)
18237
            },
18238
        }
18239
0
    }
18240
0
    extern "system" fn cmd_begin_debug_utils_label_ext(
18241
0
        command_buffer: vk::CommandBuffer,
18242
0
        p_label_info: *const vk::DebugUtilsLabelEXT,
18243
0
    ) {
18244
0
        let global = Self::instance();
18245
0
        // vkCmdBeginDebugUtilsLabelEXT
18246
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18247
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_utils;
18248
0
        let layer_result = device_info
18249
0
            .customized_info
18250
0
            .borrow()
18251
0
            .hooks()
18252
0
            .cmd_begin_debug_utils_label_ext(
18253
0
                command_buffer,
18254
0
                unsafe { p_label_info.as_ref() }.unwrap(),
18255
0
            );
18256
0
        match layer_result {
18257
0
            LayerResult::Handled(res) => res,
18258
            LayerResult::Unhandled => unsafe {
18259
0
                (dispatch_table.cmd_begin_debug_utils_label_ext)(command_buffer, p_label_info)
18260
            },
18261
        }
18262
0
    }
18263
0
    extern "system" fn cmd_end_debug_utils_label_ext(command_buffer: vk::CommandBuffer) {
18264
0
        let global = Self::instance();
18265
0
        // vkCmdEndDebugUtilsLabelEXT
18266
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18267
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_utils;
18268
0
        let layer_result = device_info
18269
0
            .customized_info
18270
0
            .borrow()
18271
0
            .hooks()
18272
0
            .cmd_end_debug_utils_label_ext(command_buffer);
18273
0
        match layer_result {
18274
0
            LayerResult::Handled(res) => res,
18275
            LayerResult::Unhandled => unsafe {
18276
0
                (dispatch_table.cmd_end_debug_utils_label_ext)(command_buffer)
18277
            },
18278
        }
18279
0
    }
18280
0
    extern "system" fn cmd_insert_debug_utils_label_ext(
18281
0
        command_buffer: vk::CommandBuffer,
18282
0
        p_label_info: *const vk::DebugUtilsLabelEXT,
18283
0
    ) {
18284
0
        let global = Self::instance();
18285
0
        // vkCmdInsertDebugUtilsLabelEXT
18286
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18287
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_utils;
18288
0
        let layer_result = device_info
18289
0
            .customized_info
18290
0
            .borrow()
18291
0
            .hooks()
18292
0
            .cmd_insert_debug_utils_label_ext(
18293
0
                command_buffer,
18294
0
                unsafe { p_label_info.as_ref() }.unwrap(),
18295
0
            );
18296
0
        match layer_result {
18297
0
            LayerResult::Handled(res) => res,
18298
            LayerResult::Unhandled => unsafe {
18299
0
                (dispatch_table.cmd_insert_debug_utils_label_ext)(command_buffer, p_label_info)
18300
            },
18301
        }
18302
0
    }
18303
0
    extern "system" fn get_android_hardware_buffer_properties_android(
18304
0
        device: vk::Device,
18305
0
        buffer: *const vk::AHardwareBuffer,
18306
0
        p_properties: *mut vk::AndroidHardwareBufferPropertiesANDROID,
18307
0
    ) -> vk::Result {
18308
0
        let global = Self::instance();
18309
0
        // vkGetAndroidHardwareBufferPropertiesANDROID
18310
0
        let device_info = global.get_device_info(device).unwrap();
18311
0
        let dispatch_table = &device_info
18312
0
            .dispatch_table
18313
0
            .android_external_memory_android_hardware_buffer;
18314
0
        let layer_result = device_info
18315
0
            .customized_info
18316
0
            .borrow()
18317
0
            .hooks()
18318
0
            .get_android_hardware_buffer_properties_android(
18319
0
                buffer,
18320
0
                unsafe { ptr_as_uninit_mut(p_properties) }.unwrap(),
18321
0
            );
18322
0
        match layer_result {
18323
0
            LayerResult::Handled(res) => match res {
18324
0
                Ok(()) => vk::Result::SUCCESS,
18325
0
                Err(e) => e,
18326
            },
18327
            LayerResult::Unhandled => unsafe {
18328
0
                (dispatch_table.get_android_hardware_buffer_properties_android)(
18329
0
                    device,
18330
0
                    buffer,
18331
0
                    p_properties,
18332
0
                )
18333
            },
18334
        }
18335
0
    }
18336
0
    extern "system" fn get_memory_android_hardware_buffer_android(
18337
0
        device: vk::Device,
18338
0
        p_info: *const vk::MemoryGetAndroidHardwareBufferInfoANDROID,
18339
0
        p_buffer: *mut *mut vk::AHardwareBuffer,
18340
0
    ) -> vk::Result {
18341
0
        let global = Self::instance();
18342
0
        // vkGetMemoryAndroidHardwareBufferANDROID
18343
0
        let device_info = global.get_device_info(device).unwrap();
18344
0
        let dispatch_table = &device_info
18345
0
            .dispatch_table
18346
0
            .android_external_memory_android_hardware_buffer;
18347
0
        let layer_result = device_info
18348
0
            .customized_info
18349
0
            .borrow()
18350
0
            .hooks()
18351
0
            .get_memory_android_hardware_buffer_android(unsafe { p_info.as_ref() }.unwrap());
18352
0
        match layer_result {
18353
0
            LayerResult::Handled(res) => match res {
18354
0
                Ok(res) => {
18355
0
                    *unsafe { p_buffer.as_mut() }.unwrap() = res;
18356
0
                    vk::Result::SUCCESS
18357
                }
18358
0
                Err(e) => e,
18359
            },
18360
            LayerResult::Unhandled => unsafe {
18361
0
                (dispatch_table.get_memory_android_hardware_buffer_android)(
18362
0
                    device, p_info, p_buffer,
18363
0
                )
18364
            },
18365
        }
18366
0
    }
18367
0
    extern "system" fn cmd_set_sample_locations_ext(
18368
0
        command_buffer: vk::CommandBuffer,
18369
0
        p_sample_locations_info: *const vk::SampleLocationsInfoEXT,
18370
0
    ) {
18371
0
        let global = Self::instance();
18372
0
        // vkCmdSetSampleLocationsEXT
18373
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18374
0
        let dispatch_table = &device_info.dispatch_table.ext_sample_locations;
18375
0
        let layer_result = device_info
18376
0
            .customized_info
18377
0
            .borrow()
18378
0
            .hooks()
18379
0
            .cmd_set_sample_locations_ext(
18380
0
                command_buffer,
18381
0
                unsafe { p_sample_locations_info.as_ref() }.unwrap(),
18382
0
            );
18383
0
        match layer_result {
18384
0
            LayerResult::Handled(res) => res,
18385
            LayerResult::Unhandled => unsafe {
18386
0
                (dispatch_table.cmd_set_sample_locations_ext)(
18387
0
                    command_buffer,
18388
0
                    p_sample_locations_info,
18389
0
                )
18390
            },
18391
        }
18392
0
    }
18393
0
    extern "system" fn get_image_drm_format_modifier_properties_ext(
18394
0
        device: vk::Device,
18395
0
        image: vk::Image,
18396
0
        p_properties: *mut vk::ImageDrmFormatModifierPropertiesEXT,
18397
0
    ) -> vk::Result {
18398
0
        let global = Self::instance();
18399
0
        // vkGetImageDrmFormatModifierPropertiesEXT
18400
0
        let device_info = global.get_device_info(device).unwrap();
18401
0
        let dispatch_table = &device_info.dispatch_table.ext_image_drm_format_modifier;
18402
0
        let layer_result = device_info
18403
0
            .customized_info
18404
0
            .borrow()
18405
0
            .hooks()
18406
0
            .get_image_drm_format_modifier_properties_ext(
18407
0
                image,
18408
0
                unsafe { ptr_as_uninit_mut(p_properties) }.unwrap(),
18409
0
            );
18410
0
        match layer_result {
18411
0
            LayerResult::Handled(res) => match res {
18412
0
                Ok(()) => vk::Result::SUCCESS,
18413
0
                Err(e) => e,
18414
            },
18415
            LayerResult::Unhandled => unsafe {
18416
0
                (dispatch_table.get_image_drm_format_modifier_properties_ext)(
18417
0
                    device,
18418
0
                    image,
18419
0
                    p_properties,
18420
0
                )
18421
            },
18422
        }
18423
0
    }
18424
0
    extern "system" fn create_validation_cache_ext(
18425
0
        device: vk::Device,
18426
0
        p_create_info: *const vk::ValidationCacheCreateInfoEXT,
18427
0
        p_allocator: *const vk::AllocationCallbacks,
18428
0
        p_validation_cache: *mut vk::ValidationCacheEXT,
18429
0
    ) -> vk::Result {
18430
0
        let global = Self::instance();
18431
0
        // vkCreateValidationCacheEXT
18432
0
        let device_info = global.get_device_info(device).unwrap();
18433
0
        let dispatch_table = &device_info.dispatch_table.ext_validation_cache;
18434
0
        let layer_result = device_info
18435
0
            .customized_info
18436
0
            .borrow()
18437
0
            .hooks()
18438
0
            .create_validation_cache_ext(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
18439
0
                p_allocator.as_ref()
18440
0
            });
18441
0
        match layer_result {
18442
0
            LayerResult::Handled(res) => match res {
18443
0
                Ok(res) => {
18444
0
                    *unsafe { p_validation_cache.as_mut() }.unwrap() = res;
18445
0
                    vk::Result::SUCCESS
18446
                }
18447
0
                Err(e) => e,
18448
            },
18449
            LayerResult::Unhandled => unsafe {
18450
0
                (dispatch_table.create_validation_cache_ext)(
18451
0
                    device,
18452
0
                    p_create_info,
18453
0
                    p_allocator,
18454
0
                    p_validation_cache,
18455
0
                )
18456
            },
18457
        }
18458
0
    }
18459
0
    extern "system" fn destroy_validation_cache_ext(
18460
0
        device: vk::Device,
18461
0
        validation_cache: vk::ValidationCacheEXT,
18462
0
        p_allocator: *const vk::AllocationCallbacks,
18463
0
    ) {
18464
0
        let global = Self::instance();
18465
0
        // vkDestroyValidationCacheEXT
18466
0
        let device_info = global.get_device_info(device).unwrap();
18467
0
        let dispatch_table = &device_info.dispatch_table.ext_validation_cache;
18468
0
        let layer_result = device_info
18469
0
            .customized_info
18470
0
            .borrow()
18471
0
            .hooks()
18472
0
            .destroy_validation_cache_ext(validation_cache, unsafe { p_allocator.as_ref() });
18473
0
        match layer_result {
18474
0
            LayerResult::Handled(res) => res,
18475
            LayerResult::Unhandled => unsafe {
18476
0
                (dispatch_table.destroy_validation_cache_ext)(device, validation_cache, p_allocator)
18477
            },
18478
        }
18479
0
    }
18480
0
    extern "system" fn merge_validation_caches_ext(
18481
0
        device: vk::Device,
18482
0
        dst_cache: vk::ValidationCacheEXT,
18483
0
        src_cache_count: u32,
18484
0
        p_src_caches: *const vk::ValidationCacheEXT,
18485
0
    ) -> vk::Result {
18486
0
        let global = Self::instance();
18487
0
        // vkMergeValidationCachesEXT
18488
0
        let device_info = global.get_device_info(device).unwrap();
18489
0
        let dispatch_table = &device_info.dispatch_table.ext_validation_cache;
18490
0
        let layer_result = device_info
18491
0
            .customized_info
18492
0
            .borrow()
18493
0
            .hooks()
18494
0
            .merge_validation_caches_ext(dst_cache, unsafe {
18495
0
                slice_from_raw_parts(p_src_caches, src_cache_count)
18496
0
            });
18497
0
        match layer_result {
18498
0
            LayerResult::Handled(res) => match res {
18499
0
                Ok(()) => vk::Result::SUCCESS,
18500
0
                Err(e) => e,
18501
            },
18502
            LayerResult::Unhandled => unsafe {
18503
0
                (dispatch_table.merge_validation_caches_ext)(
18504
0
                    device,
18505
0
                    dst_cache,
18506
0
                    src_cache_count,
18507
0
                    p_src_caches,
18508
0
                )
18509
            },
18510
        }
18511
0
    }
18512
0
    extern "system" fn get_validation_cache_data_ext(
18513
0
        device: vk::Device,
18514
0
        validation_cache: vk::ValidationCacheEXT,
18515
0
        p_data_size: *mut usize,
18516
0
        p_data: *mut c_void,
18517
0
    ) -> vk::Result {
18518
0
        let global = Self::instance();
18519
0
        // vkGetValidationCacheDataEXT
18520
0
        let device_info = global.get_device_info(device).unwrap();
18521
0
        let dispatch_table = &device_info.dispatch_table.ext_validation_cache;
18522
0
        let layer_result = device_info
18523
0
            .customized_info
18524
0
            .borrow()
18525
0
            .hooks()
18526
0
            .get_validation_cache_data_ext(
18527
0
                validation_cache,
18528
0
                unsafe { ptr_as_uninit_mut(p_data_size) }.unwrap(),
18529
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_data as *mut u8, p_data_size) },
18530
0
            );
18531
0
        match layer_result {
18532
0
            LayerResult::Handled(res) => match res {
18533
0
                Ok(()) => vk::Result::SUCCESS,
18534
0
                Err(e) => e,
18535
            },
18536
            LayerResult::Unhandled => unsafe {
18537
0
                (dispatch_table.get_validation_cache_data_ext)(
18538
0
                    device,
18539
0
                    validation_cache,
18540
0
                    p_data_size,
18541
0
                    p_data,
18542
0
                )
18543
            },
18544
        }
18545
0
    }
18546
0
    extern "system" fn cmd_bind_shading_rate_image_nv(
18547
0
        command_buffer: vk::CommandBuffer,
18548
0
        image_view: vk::ImageView,
18549
0
        image_layout: vk::ImageLayout,
18550
0
    ) {
18551
0
        let global = Self::instance();
18552
0
        // vkCmdBindShadingRateImageNV
18553
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18554
0
        let dispatch_table = &device_info.dispatch_table.nv_shading_rate_image;
18555
0
        let layer_result = device_info
18556
0
            .customized_info
18557
0
            .borrow()
18558
0
            .hooks()
18559
0
            .cmd_bind_shading_rate_image_nv(command_buffer, image_view, image_layout);
18560
0
        match layer_result {
18561
0
            LayerResult::Handled(res) => res,
18562
            LayerResult::Unhandled => unsafe {
18563
0
                (dispatch_table.cmd_bind_shading_rate_image_nv)(
18564
0
                    command_buffer,
18565
0
                    image_view,
18566
0
                    image_layout,
18567
0
                )
18568
            },
18569
        }
18570
0
    }
18571
0
    extern "system" fn cmd_set_viewport_shading_rate_palette_nv(
18572
0
        command_buffer: vk::CommandBuffer,
18573
0
        first_viewport: u32,
18574
0
        viewport_count: u32,
18575
0
        p_shading_rate_palettes: *const vk::ShadingRatePaletteNV,
18576
0
    ) {
18577
0
        let global = Self::instance();
18578
0
        // vkCmdSetViewportShadingRatePaletteNV
18579
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18580
0
        let dispatch_table = &device_info.dispatch_table.nv_shading_rate_image;
18581
0
        let layer_result = device_info
18582
0
            .customized_info
18583
0
            .borrow()
18584
0
            .hooks()
18585
0
            .cmd_set_viewport_shading_rate_palette_nv(command_buffer, first_viewport, unsafe {
18586
0
                slice_from_raw_parts(p_shading_rate_palettes, viewport_count)
18587
0
            });
18588
0
        match layer_result {
18589
0
            LayerResult::Handled(res) => res,
18590
            LayerResult::Unhandled => unsafe {
18591
0
                (dispatch_table.cmd_set_viewport_shading_rate_palette_nv)(
18592
0
                    command_buffer,
18593
0
                    first_viewport,
18594
0
                    viewport_count,
18595
0
                    p_shading_rate_palettes,
18596
0
                )
18597
            },
18598
        }
18599
0
    }
18600
0
    extern "system" fn cmd_set_coarse_sample_order_nv(
18601
0
        command_buffer: vk::CommandBuffer,
18602
0
        sample_order_type: vk::CoarseSampleOrderTypeNV,
18603
0
        custom_sample_order_count: u32,
18604
0
        p_custom_sample_orders: *const vk::CoarseSampleOrderCustomNV,
18605
0
    ) {
18606
0
        let global = Self::instance();
18607
0
        // vkCmdSetCoarseSampleOrderNV
18608
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18609
0
        let dispatch_table = &device_info.dispatch_table.nv_shading_rate_image;
18610
0
        let layer_result = device_info
18611
0
            .customized_info
18612
0
            .borrow()
18613
0
            .hooks()
18614
0
            .cmd_set_coarse_sample_order_nv(command_buffer, sample_order_type, unsafe {
18615
0
                slice_from_raw_parts(p_custom_sample_orders, custom_sample_order_count)
18616
0
            });
18617
0
        match layer_result {
18618
0
            LayerResult::Handled(res) => res,
18619
            LayerResult::Unhandled => unsafe {
18620
0
                (dispatch_table.cmd_set_coarse_sample_order_nv)(
18621
0
                    command_buffer,
18622
0
                    sample_order_type,
18623
0
                    custom_sample_order_count,
18624
0
                    p_custom_sample_orders,
18625
0
                )
18626
            },
18627
        }
18628
0
    }
18629
0
    extern "system" fn create_acceleration_structure_nv(
18630
0
        device: vk::Device,
18631
0
        p_create_info: *const vk::AccelerationStructureCreateInfoNV,
18632
0
        p_allocator: *const vk::AllocationCallbacks,
18633
0
        p_acceleration_structure: *mut vk::AccelerationStructureNV,
18634
0
    ) -> vk::Result {
18635
0
        let global = Self::instance();
18636
0
        // vkCreateAccelerationStructureNV
18637
0
        let device_info = global.get_device_info(device).unwrap();
18638
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
18639
0
        let layer_result = device_info
18640
0
            .customized_info
18641
0
            .borrow()
18642
0
            .hooks()
18643
0
            .create_acceleration_structure_nv(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
18644
0
                p_allocator.as_ref()
18645
0
            });
18646
0
        match layer_result {
18647
0
            LayerResult::Handled(res) => match res {
18648
0
                Ok(res) => {
18649
0
                    *unsafe { p_acceleration_structure.as_mut() }.unwrap() = res;
18650
0
                    vk::Result::SUCCESS
18651
                }
18652
0
                Err(e) => e,
18653
            },
18654
            LayerResult::Unhandled => unsafe {
18655
0
                (dispatch_table.create_acceleration_structure_nv)(
18656
0
                    device,
18657
0
                    p_create_info,
18658
0
                    p_allocator,
18659
0
                    p_acceleration_structure,
18660
0
                )
18661
            },
18662
        }
18663
0
    }
18664
0
    extern "system" fn destroy_acceleration_structure_nv(
18665
0
        device: vk::Device,
18666
0
        acceleration_structure: vk::AccelerationStructureNV,
18667
0
        p_allocator: *const vk::AllocationCallbacks,
18668
0
    ) {
18669
0
        let global = Self::instance();
18670
0
        // vkDestroyAccelerationStructureNV
18671
0
        let device_info = global.get_device_info(device).unwrap();
18672
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
18673
0
        let layer_result = device_info
18674
0
            .customized_info
18675
0
            .borrow()
18676
0
            .hooks()
18677
0
            .destroy_acceleration_structure_nv(acceleration_structure, unsafe {
18678
0
                p_allocator.as_ref()
18679
0
            });
18680
0
        match layer_result {
18681
0
            LayerResult::Handled(res) => res,
18682
            LayerResult::Unhandled => unsafe {
18683
0
                (dispatch_table.destroy_acceleration_structure_nv)(
18684
0
                    device,
18685
0
                    acceleration_structure,
18686
0
                    p_allocator,
18687
0
                )
18688
            },
18689
        }
18690
0
    }
18691
0
    extern "system" fn get_acceleration_structure_memory_requirements_nv(
18692
0
        device: vk::Device,
18693
0
        p_info: *const vk::AccelerationStructureMemoryRequirementsInfoNV,
18694
0
        p_memory_requirements: *mut vk::MemoryRequirements2KHR,
18695
0
    ) {
18696
0
        let global = Self::instance();
18697
0
        // vkGetAccelerationStructureMemoryRequirementsNV
18698
0
        let device_info = global.get_device_info(device).unwrap();
18699
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
18700
0
        let layer_result = device_info
18701
0
            .customized_info
18702
0
            .borrow()
18703
0
            .hooks()
18704
0
            .get_acceleration_structure_memory_requirements_nv(
18705
0
                unsafe { p_info.as_ref() }.unwrap(),
18706
0
                unsafe { ptr_as_uninit_mut(p_memory_requirements) }.unwrap(),
18707
0
            );
18708
0
        match layer_result {
18709
0
            LayerResult::Handled(res) => res,
18710
            LayerResult::Unhandled => unsafe {
18711
0
                (dispatch_table.get_acceleration_structure_memory_requirements_nv)(
18712
0
                    device,
18713
0
                    p_info,
18714
0
                    p_memory_requirements,
18715
0
                )
18716
            },
18717
        }
18718
0
    }
18719
0
    extern "system" fn bind_acceleration_structure_memory_nv(
18720
0
        device: vk::Device,
18721
0
        bind_info_count: u32,
18722
0
        p_bind_infos: *const vk::BindAccelerationStructureMemoryInfoNV,
18723
0
    ) -> vk::Result {
18724
0
        let global = Self::instance();
18725
0
        // vkBindAccelerationStructureMemoryNV
18726
0
        let device_info = global.get_device_info(device).unwrap();
18727
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
18728
0
        let layer_result = device_info
18729
0
            .customized_info
18730
0
            .borrow()
18731
0
            .hooks()
18732
0
            .bind_acceleration_structure_memory_nv(unsafe {
18733
0
                slice_from_raw_parts(p_bind_infos, bind_info_count)
18734
0
            });
18735
0
        match layer_result {
18736
0
            LayerResult::Handled(res) => match res {
18737
0
                Ok(()) => vk::Result::SUCCESS,
18738
0
                Err(e) => e,
18739
            },
18740
            LayerResult::Unhandled => unsafe {
18741
0
                (dispatch_table.bind_acceleration_structure_memory_nv)(
18742
0
                    device,
18743
0
                    bind_info_count,
18744
0
                    p_bind_infos,
18745
0
                )
18746
            },
18747
        }
18748
0
    }
18749
0
    extern "system" fn cmd_build_acceleration_structure_nv(
18750
0
        command_buffer: vk::CommandBuffer,
18751
0
        p_info: *const vk::AccelerationStructureInfoNV,
18752
0
        instance_data: vk::Buffer,
18753
0
        instance_offset: vk::DeviceSize,
18754
0
        update: vk::Bool32,
18755
0
        dst: vk::AccelerationStructureNV,
18756
0
        src: vk::AccelerationStructureNV,
18757
0
        scratch: vk::Buffer,
18758
0
        scratch_offset: vk::DeviceSize,
18759
0
    ) {
18760
0
        let global = Self::instance();
18761
0
        // vkCmdBuildAccelerationStructureNV
18762
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18763
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
18764
0
        let layer_result = device_info
18765
0
            .customized_info
18766
0
            .borrow()
18767
0
            .hooks()
18768
0
            .cmd_build_acceleration_structure_nv(
18769
0
                command_buffer,
18770
0
                unsafe { p_info.as_ref() }.unwrap(),
18771
0
                instance_data,
18772
0
                instance_offset,
18773
0
                update == vk::TRUE,
18774
0
                dst,
18775
0
                src,
18776
0
                scratch,
18777
0
                scratch_offset,
18778
0
            );
18779
0
        match layer_result {
18780
0
            LayerResult::Handled(res) => res,
18781
            LayerResult::Unhandled => unsafe {
18782
0
                (dispatch_table.cmd_build_acceleration_structure_nv)(
18783
0
                    command_buffer,
18784
0
                    p_info,
18785
0
                    instance_data,
18786
0
                    instance_offset,
18787
0
                    update,
18788
0
                    dst,
18789
0
                    src,
18790
0
                    scratch,
18791
0
                    scratch_offset,
18792
0
                )
18793
            },
18794
        }
18795
0
    }
18796
0
    extern "system" fn cmd_copy_acceleration_structure_nv(
18797
0
        command_buffer: vk::CommandBuffer,
18798
0
        dst: vk::AccelerationStructureNV,
18799
0
        src: vk::AccelerationStructureNV,
18800
0
        mode: vk::CopyAccelerationStructureModeKHR,
18801
0
    ) {
18802
0
        let global = Self::instance();
18803
0
        // vkCmdCopyAccelerationStructureNV
18804
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18805
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
18806
0
        let layer_result = device_info
18807
0
            .customized_info
18808
0
            .borrow()
18809
0
            .hooks()
18810
0
            .cmd_copy_acceleration_structure_nv(command_buffer, dst, src, mode);
18811
0
        match layer_result {
18812
0
            LayerResult::Handled(res) => res,
18813
            LayerResult::Unhandled => unsafe {
18814
0
                (dispatch_table.cmd_copy_acceleration_structure_nv)(command_buffer, dst, src, mode)
18815
            },
18816
        }
18817
0
    }
18818
0
    extern "system" fn cmd_trace_rays_nv(
18819
0
        command_buffer: vk::CommandBuffer,
18820
0
        raygen_shader_binding_table_buffer: vk::Buffer,
18821
0
        raygen_shader_binding_offset: vk::DeviceSize,
18822
0
        miss_shader_binding_table_buffer: vk::Buffer,
18823
0
        miss_shader_binding_offset: vk::DeviceSize,
18824
0
        miss_shader_binding_stride: vk::DeviceSize,
18825
0
        hit_shader_binding_table_buffer: vk::Buffer,
18826
0
        hit_shader_binding_offset: vk::DeviceSize,
18827
0
        hit_shader_binding_stride: vk::DeviceSize,
18828
0
        callable_shader_binding_table_buffer: vk::Buffer,
18829
0
        callable_shader_binding_offset: vk::DeviceSize,
18830
0
        callable_shader_binding_stride: vk::DeviceSize,
18831
0
        width: u32,
18832
0
        height: u32,
18833
0
        depth: u32,
18834
0
    ) {
18835
0
        let global = Self::instance();
18836
0
        // vkCmdTraceRaysNV
18837
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18838
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
18839
0
        let layer_result = device_info
18840
0
            .customized_info
18841
0
            .borrow()
18842
0
            .hooks()
18843
0
            .cmd_trace_rays_nv(
18844
0
                command_buffer,
18845
0
                raygen_shader_binding_table_buffer,
18846
0
                raygen_shader_binding_offset,
18847
0
                miss_shader_binding_table_buffer,
18848
0
                miss_shader_binding_offset,
18849
0
                miss_shader_binding_stride,
18850
0
                hit_shader_binding_table_buffer,
18851
0
                hit_shader_binding_offset,
18852
0
                hit_shader_binding_stride,
18853
0
                callable_shader_binding_table_buffer,
18854
0
                callable_shader_binding_offset,
18855
0
                callable_shader_binding_stride,
18856
0
                width,
18857
0
                height,
18858
0
                depth,
18859
0
            );
18860
0
        match layer_result {
18861
0
            LayerResult::Handled(res) => res,
18862
            LayerResult::Unhandled => unsafe {
18863
0
                (dispatch_table.cmd_trace_rays_nv)(
18864
0
                    command_buffer,
18865
0
                    raygen_shader_binding_table_buffer,
18866
0
                    raygen_shader_binding_offset,
18867
0
                    miss_shader_binding_table_buffer,
18868
0
                    miss_shader_binding_offset,
18869
0
                    miss_shader_binding_stride,
18870
0
                    hit_shader_binding_table_buffer,
18871
0
                    hit_shader_binding_offset,
18872
0
                    hit_shader_binding_stride,
18873
0
                    callable_shader_binding_table_buffer,
18874
0
                    callable_shader_binding_offset,
18875
0
                    callable_shader_binding_stride,
18876
0
                    width,
18877
0
                    height,
18878
0
                    depth,
18879
0
                )
18880
            },
18881
        }
18882
0
    }
18883
0
    extern "system" fn create_ray_tracing_pipelines_nv(
18884
0
        device: vk::Device,
18885
0
        pipeline_cache: vk::PipelineCache,
18886
0
        create_info_count: u32,
18887
0
        p_create_infos: *const vk::RayTracingPipelineCreateInfoNV,
18888
0
        p_allocator: *const vk::AllocationCallbacks,
18889
0
        p_pipelines: *mut vk::Pipeline,
18890
0
    ) -> vk::Result {
18891
0
        let global = Self::instance();
18892
0
        // vkCreateRayTracingPipelinesNV
18893
0
        let device_info = global.get_device_info(device).unwrap();
18894
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
18895
0
        let layer_result = device_info
18896
0
            .customized_info
18897
0
            .borrow()
18898
0
            .hooks()
18899
0
            .create_ray_tracing_pipelines_nv(
18900
0
                pipeline_cache,
18901
0
                unsafe { slice_from_raw_parts(p_create_infos, create_info_count) },
18902
0
                unsafe { p_allocator.as_ref() },
18903
0
            );
18904
0
        match layer_result {
18905
0
            LayerResult::Handled(res) => match res {
18906
0
                Ok(res) => {
18907
0
                    unsafe {
18908
0
                        std::slice::from_raw_parts_mut(
18909
0
                            p_pipelines,
18910
0
                            create_info_count.try_into().unwrap(),
18911
0
                        )
18912
0
                    }
18913
0
                    .copy_from_slice(&res);
18914
0
                    vk::Result::SUCCESS
18915
                }
18916
0
                Err(e) => e,
18917
            },
18918
            LayerResult::Unhandled => unsafe {
18919
0
                (dispatch_table.create_ray_tracing_pipelines_nv)(
18920
0
                    device,
18921
0
                    pipeline_cache,
18922
0
                    create_info_count,
18923
0
                    p_create_infos,
18924
0
                    p_allocator,
18925
0
                    p_pipelines,
18926
0
                )
18927
            },
18928
        }
18929
0
    }
18930
0
    extern "system" fn get_ray_tracing_shader_group_handles_khr(
18931
0
        device: vk::Device,
18932
0
        pipeline: vk::Pipeline,
18933
0
        first_group: u32,
18934
0
        group_count: u32,
18935
0
        data_size: usize,
18936
0
        p_data: *mut c_void,
18937
0
    ) -> vk::Result {
18938
0
        let global = Self::instance();
18939
0
        // vkGetRayTracingShaderGroupHandlesKHR
18940
0
        let device_info = global.get_device_info(device).unwrap();
18941
0
        let dispatch_table = &device_info.dispatch_table.khr_ray_tracing_pipeline;
18942
0
        let layer_result = device_info
18943
0
            .customized_info
18944
0
            .borrow()
18945
0
            .hooks()
18946
0
            .get_ray_tracing_shader_group_handles_khr(pipeline, first_group, group_count, unsafe {
18947
0
                uninit_slice_from_raw_parts_mut(p_data as *mut u8, data_size)
18948
0
            });
18949
0
        match layer_result {
18950
0
            LayerResult::Handled(res) => match res {
18951
0
                Ok(()) => vk::Result::SUCCESS,
18952
0
                Err(e) => e,
18953
            },
18954
            LayerResult::Unhandled => unsafe {
18955
0
                (dispatch_table.get_ray_tracing_shader_group_handles_khr)(
18956
0
                    device,
18957
0
                    pipeline,
18958
0
                    first_group,
18959
0
                    group_count,
18960
0
                    data_size,
18961
0
                    p_data,
18962
0
                )
18963
            },
18964
        }
18965
0
    }
18966
0
    extern "system" fn get_acceleration_structure_handle_nv(
18967
0
        device: vk::Device,
18968
0
        acceleration_structure: vk::AccelerationStructureNV,
18969
0
        data_size: usize,
18970
0
        p_data: *mut c_void,
18971
0
    ) -> vk::Result {
18972
0
        let global = Self::instance();
18973
0
        // vkGetAccelerationStructureHandleNV
18974
0
        let device_info = global.get_device_info(device).unwrap();
18975
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
18976
0
        let layer_result = device_info
18977
0
            .customized_info
18978
0
            .borrow()
18979
0
            .hooks()
18980
0
            .get_acceleration_structure_handle_nv(acceleration_structure, unsafe {
18981
0
                uninit_slice_from_raw_parts_mut(p_data as *mut u8, data_size)
18982
0
            });
18983
0
        match layer_result {
18984
0
            LayerResult::Handled(res) => match res {
18985
0
                Ok(()) => vk::Result::SUCCESS,
18986
0
                Err(e) => e,
18987
            },
18988
            LayerResult::Unhandled => unsafe {
18989
0
                (dispatch_table.get_acceleration_structure_handle_nv)(
18990
0
                    device,
18991
0
                    acceleration_structure,
18992
0
                    data_size,
18993
0
                    p_data,
18994
0
                )
18995
            },
18996
        }
18997
0
    }
18998
0
    extern "system" fn cmd_write_acceleration_structures_properties_nv(
18999
0
        command_buffer: vk::CommandBuffer,
19000
0
        acceleration_structure_count: u32,
19001
0
        p_acceleration_structures: *const vk::AccelerationStructureNV,
19002
0
        query_type: vk::QueryType,
19003
0
        query_pool: vk::QueryPool,
19004
0
        first_query: u32,
19005
0
    ) {
19006
0
        let global = Self::instance();
19007
0
        // vkCmdWriteAccelerationStructuresPropertiesNV
19008
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19009
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
19010
0
        let layer_result = device_info
19011
0
            .customized_info
19012
0
            .borrow()
19013
0
            .hooks()
19014
0
            .cmd_write_acceleration_structures_properties_nv(
19015
0
                command_buffer,
19016
0
                unsafe {
19017
0
                    slice_from_raw_parts(p_acceleration_structures, acceleration_structure_count)
19018
0
                },
19019
0
                query_type,
19020
0
                query_pool,
19021
0
                first_query,
19022
0
            );
19023
0
        match layer_result {
19024
0
            LayerResult::Handled(res) => res,
19025
            LayerResult::Unhandled => unsafe {
19026
0
                (dispatch_table.cmd_write_acceleration_structures_properties_nv)(
19027
0
                    command_buffer,
19028
0
                    acceleration_structure_count,
19029
0
                    p_acceleration_structures,
19030
0
                    query_type,
19031
0
                    query_pool,
19032
0
                    first_query,
19033
0
                )
19034
            },
19035
        }
19036
0
    }
19037
0
    extern "system" fn compile_deferred_nv(
19038
0
        device: vk::Device,
19039
0
        pipeline: vk::Pipeline,
19040
0
        shader: u32,
19041
0
    ) -> vk::Result {
19042
0
        let global = Self::instance();
19043
0
        // vkCompileDeferredNV
19044
0
        let device_info = global.get_device_info(device).unwrap();
19045
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
19046
0
        let layer_result = device_info
19047
0
            .customized_info
19048
0
            .borrow()
19049
0
            .hooks()
19050
0
            .compile_deferred_nv(pipeline, shader);
19051
0
        match layer_result {
19052
0
            LayerResult::Handled(res) => match res {
19053
0
                Ok(()) => vk::Result::SUCCESS,
19054
0
                Err(e) => e,
19055
            },
19056
            LayerResult::Unhandled => unsafe {
19057
0
                (dispatch_table.compile_deferred_nv)(device, pipeline, shader)
19058
            },
19059
        }
19060
0
    }
19061
0
    extern "system" fn get_memory_host_pointer_properties_ext(
19062
0
        device: vk::Device,
19063
0
        handle_type: vk::ExternalMemoryHandleTypeFlags,
19064
0
        p_host_pointer: *const c_void,
19065
0
        p_memory_host_pointer_properties: *mut vk::MemoryHostPointerPropertiesEXT,
19066
0
    ) -> vk::Result {
19067
0
        let global = Self::instance();
19068
0
        // vkGetMemoryHostPointerPropertiesEXT
19069
0
        let device_info = global.get_device_info(device).unwrap();
19070
0
        let dispatch_table = &device_info.dispatch_table.ext_external_memory_host;
19071
0
        let layer_result = device_info
19072
0
            .customized_info
19073
0
            .borrow()
19074
0
            .hooks()
19075
0
            .get_memory_host_pointer_properties_ext(
19076
0
                handle_type,
19077
0
                p_host_pointer,
19078
0
                unsafe { ptr_as_uninit_mut(p_memory_host_pointer_properties) }.unwrap(),
19079
0
            );
19080
0
        match layer_result {
19081
0
            LayerResult::Handled(res) => match res {
19082
0
                Ok(()) => vk::Result::SUCCESS,
19083
0
                Err(e) => e,
19084
            },
19085
            LayerResult::Unhandled => unsafe {
19086
0
                (dispatch_table.get_memory_host_pointer_properties_ext)(
19087
0
                    device,
19088
0
                    handle_type,
19089
0
                    p_host_pointer,
19090
0
                    p_memory_host_pointer_properties,
19091
0
                )
19092
            },
19093
        }
19094
0
    }
19095
0
    extern "system" fn cmd_write_buffer_marker_amd(
19096
0
        command_buffer: vk::CommandBuffer,
19097
0
        pipeline_stage: vk::PipelineStageFlags,
19098
0
        dst_buffer: vk::Buffer,
19099
0
        dst_offset: vk::DeviceSize,
19100
0
        marker: u32,
19101
0
    ) {
19102
0
        let global = Self::instance();
19103
0
        // vkCmdWriteBufferMarkerAMD
19104
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19105
0
        let dispatch_table = &device_info.dispatch_table.amd_buffer_marker;
19106
0
        let layer_result = device_info
19107
0
            .customized_info
19108
0
            .borrow()
19109
0
            .hooks()
19110
0
            .cmd_write_buffer_marker_amd(
19111
0
                command_buffer,
19112
0
                pipeline_stage,
19113
0
                dst_buffer,
19114
0
                dst_offset,
19115
0
                marker,
19116
0
            );
19117
0
        match layer_result {
19118
0
            LayerResult::Handled(res) => res,
19119
            LayerResult::Unhandled => unsafe {
19120
0
                (dispatch_table.cmd_write_buffer_marker_amd)(
19121
0
                    command_buffer,
19122
0
                    pipeline_stage,
19123
0
                    dst_buffer,
19124
0
                    dst_offset,
19125
0
                    marker,
19126
0
                )
19127
            },
19128
        }
19129
0
    }
19130
0
    extern "system" fn get_calibrated_timestamps_ext(
19131
0
        device: vk::Device,
19132
0
        timestamp_count: u32,
19133
0
        p_timestamp_infos: *const vk::CalibratedTimestampInfoEXT,
19134
0
        p_timestamps: *mut u64,
19135
0
        p_max_deviation: *mut u64,
19136
0
    ) -> vk::Result {
19137
0
        let global = Self::instance();
19138
0
        // vkGetCalibratedTimestampsEXT
19139
0
        let device_info = global.get_device_info(device).unwrap();
19140
0
        let dispatch_table = &device_info.dispatch_table.ext_calibrated_timestamps;
19141
0
        let layer_result = device_info
19142
0
            .customized_info
19143
0
            .borrow()
19144
0
            .hooks()
19145
0
            .get_calibrated_timestamps_ext(
19146
0
                unsafe { slice_from_raw_parts(p_timestamp_infos, timestamp_count) },
19147
0
                unsafe { uninit_slice_from_raw_parts_mut(p_timestamps, timestamp_count) },
19148
0
            );
19149
0
        match layer_result {
19150
0
            LayerResult::Handled(res) => match res {
19151
0
                Ok(res) => {
19152
0
                    *unsafe { p_max_deviation.as_mut() }.unwrap() = res;
19153
0
                    vk::Result::SUCCESS
19154
                }
19155
0
                Err(e) => e,
19156
            },
19157
            LayerResult::Unhandled => unsafe {
19158
0
                (dispatch_table.get_calibrated_timestamps_ext)(
19159
0
                    device,
19160
0
                    timestamp_count,
19161
0
                    p_timestamp_infos,
19162
0
                    p_timestamps,
19163
0
                    p_max_deviation,
19164
0
                )
19165
            },
19166
        }
19167
0
    }
19168
0
    extern "system" fn cmd_draw_mesh_tasks_nv(
19169
0
        command_buffer: vk::CommandBuffer,
19170
0
        task_count: u32,
19171
0
        first_task: u32,
19172
0
    ) {
19173
0
        let global = Self::instance();
19174
0
        // vkCmdDrawMeshTasksNV
19175
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19176
0
        let dispatch_table = &device_info.dispatch_table.nv_mesh_shader;
19177
0
        let layer_result = device_info
19178
0
            .customized_info
19179
0
            .borrow()
19180
0
            .hooks()
19181
0
            .cmd_draw_mesh_tasks_nv(command_buffer, task_count, first_task);
19182
0
        match layer_result {
19183
0
            LayerResult::Handled(res) => res,
19184
            LayerResult::Unhandled => unsafe {
19185
0
                (dispatch_table.cmd_draw_mesh_tasks_nv)(command_buffer, task_count, first_task)
19186
            },
19187
        }
19188
0
    }
19189
0
    extern "system" fn cmd_draw_mesh_tasks_indirect_nv(
19190
0
        command_buffer: vk::CommandBuffer,
19191
0
        buffer: vk::Buffer,
19192
0
        offset: vk::DeviceSize,
19193
0
        draw_count: u32,
19194
0
        stride: u32,
19195
0
    ) {
19196
0
        let global = Self::instance();
19197
0
        // vkCmdDrawMeshTasksIndirectNV
19198
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19199
0
        let dispatch_table = &device_info.dispatch_table.nv_mesh_shader;
19200
0
        let layer_result = device_info
19201
0
            .customized_info
19202
0
            .borrow()
19203
0
            .hooks()
19204
0
            .cmd_draw_mesh_tasks_indirect_nv(command_buffer, buffer, offset, draw_count, stride);
19205
0
        match layer_result {
19206
0
            LayerResult::Handled(res) => res,
19207
            LayerResult::Unhandled => unsafe {
19208
0
                (dispatch_table.cmd_draw_mesh_tasks_indirect_nv)(
19209
0
                    command_buffer,
19210
0
                    buffer,
19211
0
                    offset,
19212
0
                    draw_count,
19213
0
                    stride,
19214
0
                )
19215
            },
19216
        }
19217
0
    }
19218
0
    extern "system" fn cmd_draw_mesh_tasks_indirect_count_nv(
19219
0
        command_buffer: vk::CommandBuffer,
19220
0
        buffer: vk::Buffer,
19221
0
        offset: vk::DeviceSize,
19222
0
        count_buffer: vk::Buffer,
19223
0
        count_buffer_offset: vk::DeviceSize,
19224
0
        max_draw_count: u32,
19225
0
        stride: u32,
19226
0
    ) {
19227
0
        let global = Self::instance();
19228
0
        // vkCmdDrawMeshTasksIndirectCountNV
19229
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19230
0
        let dispatch_table = &device_info.dispatch_table.nv_mesh_shader;
19231
0
        let layer_result = device_info
19232
0
            .customized_info
19233
0
            .borrow()
19234
0
            .hooks()
19235
0
            .cmd_draw_mesh_tasks_indirect_count_nv(
19236
0
                command_buffer,
19237
0
                buffer,
19238
0
                offset,
19239
0
                count_buffer,
19240
0
                count_buffer_offset,
19241
0
                max_draw_count,
19242
0
                stride,
19243
0
            );
19244
0
        match layer_result {
19245
0
            LayerResult::Handled(res) => res,
19246
            LayerResult::Unhandled => unsafe {
19247
0
                (dispatch_table.cmd_draw_mesh_tasks_indirect_count_nv)(
19248
0
                    command_buffer,
19249
0
                    buffer,
19250
0
                    offset,
19251
0
                    count_buffer,
19252
0
                    count_buffer_offset,
19253
0
                    max_draw_count,
19254
0
                    stride,
19255
0
                )
19256
            },
19257
        }
19258
0
    }
19259
0
    extern "system" fn cmd_set_exclusive_scissor_nv(
19260
0
        command_buffer: vk::CommandBuffer,
19261
0
        first_exclusive_scissor: u32,
19262
0
        exclusive_scissor_count: u32,
19263
0
        p_exclusive_scissors: *const vk::Rect2D,
19264
0
    ) {
19265
0
        let global = Self::instance();
19266
0
        // vkCmdSetExclusiveScissorNV
19267
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19268
0
        let dispatch_table = &device_info.dispatch_table.nv_scissor_exclusive;
19269
0
        let layer_result = device_info
19270
0
            .customized_info
19271
0
            .borrow()
19272
0
            .hooks()
19273
0
            .cmd_set_exclusive_scissor_nv(command_buffer, first_exclusive_scissor, unsafe {
19274
0
                slice_from_raw_parts(p_exclusive_scissors, exclusive_scissor_count)
19275
0
            });
19276
0
        match layer_result {
19277
0
            LayerResult::Handled(res) => res,
19278
            LayerResult::Unhandled => unsafe {
19279
0
                (dispatch_table.cmd_set_exclusive_scissor_nv)(
19280
0
                    command_buffer,
19281
0
                    first_exclusive_scissor,
19282
0
                    exclusive_scissor_count,
19283
0
                    p_exclusive_scissors,
19284
0
                )
19285
            },
19286
        }
19287
0
    }
19288
0
    extern "system" fn cmd_set_checkpoint_nv(
19289
0
        command_buffer: vk::CommandBuffer,
19290
0
        p_checkpoint_marker: *const c_void,
19291
0
    ) {
19292
0
        let global = Self::instance();
19293
0
        // vkCmdSetCheckpointNV
19294
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19295
0
        let dispatch_table = &device_info.dispatch_table.nv_device_diagnostic_checkpoints;
19296
0
        let layer_result = device_info
19297
0
            .customized_info
19298
0
            .borrow()
19299
0
            .hooks()
19300
0
            .cmd_set_checkpoint_nv(command_buffer, p_checkpoint_marker);
19301
0
        match layer_result {
19302
0
            LayerResult::Handled(res) => res,
19303
            LayerResult::Unhandled => unsafe {
19304
0
                (dispatch_table.cmd_set_checkpoint_nv)(command_buffer, p_checkpoint_marker)
19305
            },
19306
        }
19307
0
    }
19308
0
    extern "system" fn get_queue_checkpoint_data_nv(
19309
0
        queue: vk::Queue,
19310
0
        p_checkpoint_data_count: *mut u32,
19311
0
        p_checkpoint_data: *mut vk::CheckpointDataNV,
19312
0
    ) {
19313
0
        let global = Self::instance();
19314
0
        // vkGetQueueCheckpointDataNV
19315
0
        let device_info = global.get_device_info(queue).unwrap();
19316
0
        let dispatch_table = &device_info.dispatch_table.nv_device_diagnostic_checkpoints;
19317
0
        let layer_result = device_info
19318
0
            .customized_info
19319
0
            .borrow()
19320
0
            .hooks()
19321
0
            .get_queue_checkpoint_data_nv(
19322
0
                queue,
19323
0
                unsafe { ptr_as_uninit_mut(p_checkpoint_data_count) }.unwrap(),
19324
0
                unsafe {
19325
0
                    maybe_uninit_slice_from_raw_parts_mut(
19326
0
                        p_checkpoint_data,
19327
0
                        p_checkpoint_data_count,
19328
0
                    )
19329
0
                },
19330
0
            );
19331
0
        match layer_result {
19332
0
            LayerResult::Handled(res) => res,
19333
            LayerResult::Unhandled => unsafe {
19334
0
                (dispatch_table.get_queue_checkpoint_data_nv)(
19335
0
                    queue,
19336
0
                    p_checkpoint_data_count,
19337
0
                    p_checkpoint_data,
19338
0
                )
19339
            },
19340
        }
19341
0
    }
19342
0
    extern "system" fn initialize_performance_api_intel(
19343
0
        device: vk::Device,
19344
0
        p_initialize_info: *const vk::InitializePerformanceApiInfoINTEL,
19345
0
    ) -> vk::Result {
19346
0
        let global = Self::instance();
19347
0
        // vkInitializePerformanceApiINTEL
19348
0
        let device_info = global.get_device_info(device).unwrap();
19349
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19350
0
        let layer_result = device_info
19351
0
            .customized_info
19352
0
            .borrow()
19353
0
            .hooks()
19354
0
            .initialize_performance_api_intel(unsafe { p_initialize_info.as_ref() }.unwrap());
19355
0
        match layer_result {
19356
0
            LayerResult::Handled(res) => match res {
19357
0
                Ok(()) => vk::Result::SUCCESS,
19358
0
                Err(e) => e,
19359
            },
19360
            LayerResult::Unhandled => unsafe {
19361
0
                (dispatch_table.initialize_performance_api_intel)(device, p_initialize_info)
19362
            },
19363
        }
19364
0
    }
19365
0
    extern "system" fn uninitialize_performance_api_intel(device: vk::Device) {
19366
0
        let global = Self::instance();
19367
0
        // vkUninitializePerformanceApiINTEL
19368
0
        let device_info = global.get_device_info(device).unwrap();
19369
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19370
0
        let layer_result = device_info
19371
0
            .customized_info
19372
0
            .borrow()
19373
0
            .hooks()
19374
0
            .uninitialize_performance_api_intel();
19375
0
        match layer_result {
19376
0
            LayerResult::Handled(res) => res,
19377
            LayerResult::Unhandled => unsafe {
19378
0
                (dispatch_table.uninitialize_performance_api_intel)(device)
19379
            },
19380
        }
19381
0
    }
19382
0
    extern "system" fn cmd_set_performance_marker_intel(
19383
0
        command_buffer: vk::CommandBuffer,
19384
0
        p_marker_info: *const vk::PerformanceMarkerInfoINTEL,
19385
0
    ) -> vk::Result {
19386
0
        let global = Self::instance();
19387
0
        // vkCmdSetPerformanceMarkerINTEL
19388
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19389
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19390
0
        let layer_result = device_info
19391
0
            .customized_info
19392
0
            .borrow()
19393
0
            .hooks()
19394
0
            .cmd_set_performance_marker_intel(
19395
0
                command_buffer,
19396
0
                unsafe { p_marker_info.as_ref() }.unwrap(),
19397
0
            );
19398
0
        match layer_result {
19399
0
            LayerResult::Handled(res) => match res {
19400
0
                Ok(()) => vk::Result::SUCCESS,
19401
0
                Err(e) => e,
19402
            },
19403
            LayerResult::Unhandled => unsafe {
19404
0
                (dispatch_table.cmd_set_performance_marker_intel)(command_buffer, p_marker_info)
19405
            },
19406
        }
19407
0
    }
19408
0
    extern "system" fn cmd_set_performance_stream_marker_intel(
19409
0
        command_buffer: vk::CommandBuffer,
19410
0
        p_marker_info: *const vk::PerformanceStreamMarkerInfoINTEL,
19411
0
    ) -> vk::Result {
19412
0
        let global = Self::instance();
19413
0
        // vkCmdSetPerformanceStreamMarkerINTEL
19414
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19415
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19416
0
        let layer_result = device_info
19417
0
            .customized_info
19418
0
            .borrow()
19419
0
            .hooks()
19420
0
            .cmd_set_performance_stream_marker_intel(
19421
0
                command_buffer,
19422
0
                unsafe { p_marker_info.as_ref() }.unwrap(),
19423
0
            );
19424
0
        match layer_result {
19425
0
            LayerResult::Handled(res) => match res {
19426
0
                Ok(()) => vk::Result::SUCCESS,
19427
0
                Err(e) => e,
19428
            },
19429
            LayerResult::Unhandled => unsafe {
19430
0
                (dispatch_table.cmd_set_performance_stream_marker_intel)(
19431
0
                    command_buffer,
19432
0
                    p_marker_info,
19433
0
                )
19434
            },
19435
        }
19436
0
    }
19437
0
    extern "system" fn cmd_set_performance_override_intel(
19438
0
        command_buffer: vk::CommandBuffer,
19439
0
        p_override_info: *const vk::PerformanceOverrideInfoINTEL,
19440
0
    ) -> vk::Result {
19441
0
        let global = Self::instance();
19442
0
        // vkCmdSetPerformanceOverrideINTEL
19443
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19444
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19445
0
        let layer_result = device_info
19446
0
            .customized_info
19447
0
            .borrow()
19448
0
            .hooks()
19449
0
            .cmd_set_performance_override_intel(
19450
0
                command_buffer,
19451
0
                unsafe { p_override_info.as_ref() }.unwrap(),
19452
0
            );
19453
0
        match layer_result {
19454
0
            LayerResult::Handled(res) => match res {
19455
0
                Ok(()) => vk::Result::SUCCESS,
19456
0
                Err(e) => e,
19457
            },
19458
            LayerResult::Unhandled => unsafe {
19459
0
                (dispatch_table.cmd_set_performance_override_intel)(command_buffer, p_override_info)
19460
            },
19461
        }
19462
0
    }
19463
0
    extern "system" fn acquire_performance_configuration_intel(
19464
0
        device: vk::Device,
19465
0
        p_acquire_info: *const vk::PerformanceConfigurationAcquireInfoINTEL,
19466
0
        p_configuration: *mut vk::PerformanceConfigurationINTEL,
19467
0
    ) -> vk::Result {
19468
0
        let global = Self::instance();
19469
0
        // vkAcquirePerformanceConfigurationINTEL
19470
0
        let device_info = global.get_device_info(device).unwrap();
19471
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19472
0
        let layer_result = device_info
19473
0
            .customized_info
19474
0
            .borrow()
19475
0
            .hooks()
19476
0
            .acquire_performance_configuration_intel(unsafe { p_acquire_info.as_ref() }.unwrap());
19477
0
        match layer_result {
19478
0
            LayerResult::Handled(res) => match res {
19479
0
                Ok(res) => {
19480
0
                    *unsafe { p_configuration.as_mut() }.unwrap() = res;
19481
0
                    vk::Result::SUCCESS
19482
                }
19483
0
                Err(e) => e,
19484
            },
19485
            LayerResult::Unhandled => unsafe {
19486
0
                (dispatch_table.acquire_performance_configuration_intel)(
19487
0
                    device,
19488
0
                    p_acquire_info,
19489
0
                    p_configuration,
19490
0
                )
19491
            },
19492
        }
19493
0
    }
19494
0
    extern "system" fn release_performance_configuration_intel(
19495
0
        device: vk::Device,
19496
0
        configuration: vk::PerformanceConfigurationINTEL,
19497
0
    ) -> vk::Result {
19498
0
        let global = Self::instance();
19499
0
        // vkReleasePerformanceConfigurationINTEL
19500
0
        let device_info = global.get_device_info(device).unwrap();
19501
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19502
0
        let layer_result = device_info
19503
0
            .customized_info
19504
0
            .borrow()
19505
0
            .hooks()
19506
0
            .release_performance_configuration_intel(configuration);
19507
0
        match layer_result {
19508
0
            LayerResult::Handled(res) => match res {
19509
0
                Ok(()) => vk::Result::SUCCESS,
19510
0
                Err(e) => e,
19511
            },
19512
            LayerResult::Unhandled => unsafe {
19513
0
                (dispatch_table.release_performance_configuration_intel)(device, configuration)
19514
            },
19515
        }
19516
0
    }
19517
0
    extern "system" fn queue_set_performance_configuration_intel(
19518
0
        queue: vk::Queue,
19519
0
        configuration: vk::PerformanceConfigurationINTEL,
19520
0
    ) -> vk::Result {
19521
0
        let global = Self::instance();
19522
0
        // vkQueueSetPerformanceConfigurationINTEL
19523
0
        let device_info = global.get_device_info(queue).unwrap();
19524
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19525
0
        let layer_result = device_info
19526
0
            .customized_info
19527
0
            .borrow()
19528
0
            .hooks()
19529
0
            .queue_set_performance_configuration_intel(queue, configuration);
19530
0
        match layer_result {
19531
0
            LayerResult::Handled(res) => match res {
19532
0
                Ok(()) => vk::Result::SUCCESS,
19533
0
                Err(e) => e,
19534
            },
19535
            LayerResult::Unhandled => unsafe {
19536
0
                (dispatch_table.queue_set_performance_configuration_intel)(queue, configuration)
19537
            },
19538
        }
19539
0
    }
19540
0
    extern "system" fn get_performance_parameter_intel(
19541
0
        device: vk::Device,
19542
0
        parameter: vk::PerformanceParameterTypeINTEL,
19543
0
        p_value: *mut vk::PerformanceValueINTEL,
19544
0
    ) -> vk::Result {
19545
0
        let global = Self::instance();
19546
0
        // vkGetPerformanceParameterINTEL
19547
0
        let device_info = global.get_device_info(device).unwrap();
19548
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19549
0
        let layer_result = device_info
19550
0
            .customized_info
19551
0
            .borrow()
19552
0
            .hooks()
19553
0
            .get_performance_parameter_intel(
19554
0
                parameter,
19555
0
                unsafe { ptr_as_uninit_mut(p_value) }.unwrap(),
19556
0
            );
19557
0
        match layer_result {
19558
0
            LayerResult::Handled(res) => match res {
19559
0
                Ok(()) => vk::Result::SUCCESS,
19560
0
                Err(e) => e,
19561
            },
19562
            LayerResult::Unhandled => unsafe {
19563
0
                (dispatch_table.get_performance_parameter_intel)(device, parameter, p_value)
19564
            },
19565
        }
19566
0
    }
19567
0
    extern "system" fn set_local_dimming_amd(
19568
0
        device: vk::Device,
19569
0
        swap_chain: vk::SwapchainKHR,
19570
0
        local_dimming_enable: vk::Bool32,
19571
0
    ) {
19572
0
        let global = Self::instance();
19573
0
        // vkSetLocalDimmingAMD
19574
0
        let device_info = global.get_device_info(device).unwrap();
19575
0
        let dispatch_table = &device_info.dispatch_table.amd_display_native_hdr;
19576
0
        let layer_result = device_info
19577
0
            .customized_info
19578
0
            .borrow()
19579
0
            .hooks()
19580
0
            .set_local_dimming_amd(swap_chain, local_dimming_enable == vk::TRUE);
19581
0
        match layer_result {
19582
0
            LayerResult::Handled(res) => res,
19583
            LayerResult::Unhandled => unsafe {
19584
0
                (dispatch_table.set_local_dimming_amd)(device, swap_chain, local_dimming_enable)
19585
            },
19586
        }
19587
0
    }
19588
0
    extern "system" fn acquire_full_screen_exclusive_mode_ext(
19589
0
        device: vk::Device,
19590
0
        swapchain: vk::SwapchainKHR,
19591
0
    ) -> vk::Result {
19592
0
        let global = Self::instance();
19593
0
        // vkAcquireFullScreenExclusiveModeEXT
19594
0
        let device_info = global.get_device_info(device).unwrap();
19595
0
        let dispatch_table = &device_info.dispatch_table.ext_full_screen_exclusive;
19596
0
        let layer_result = device_info
19597
0
            .customized_info
19598
0
            .borrow()
19599
0
            .hooks()
19600
0
            .acquire_full_screen_exclusive_mode_ext(swapchain);
19601
0
        match layer_result {
19602
0
            LayerResult::Handled(res) => match res {
19603
0
                Ok(()) => vk::Result::SUCCESS,
19604
0
                Err(e) => e,
19605
            },
19606
            LayerResult::Unhandled => unsafe {
19607
0
                (dispatch_table.acquire_full_screen_exclusive_mode_ext)(device, swapchain)
19608
            },
19609
        }
19610
0
    }
19611
0
    extern "system" fn release_full_screen_exclusive_mode_ext(
19612
0
        device: vk::Device,
19613
0
        swapchain: vk::SwapchainKHR,
19614
0
    ) -> vk::Result {
19615
0
        let global = Self::instance();
19616
0
        // vkReleaseFullScreenExclusiveModeEXT
19617
0
        let device_info = global.get_device_info(device).unwrap();
19618
0
        let dispatch_table = &device_info.dispatch_table.ext_full_screen_exclusive;
19619
0
        let layer_result = device_info
19620
0
            .customized_info
19621
0
            .borrow()
19622
0
            .hooks()
19623
0
            .release_full_screen_exclusive_mode_ext(swapchain);
19624
0
        match layer_result {
19625
0
            LayerResult::Handled(res) => match res {
19626
0
                Ok(()) => vk::Result::SUCCESS,
19627
0
                Err(e) => e,
19628
            },
19629
            LayerResult::Unhandled => unsafe {
19630
0
                (dispatch_table.release_full_screen_exclusive_mode_ext)(device, swapchain)
19631
            },
19632
        }
19633
0
    }
19634
0
    extern "system" fn get_device_group_surface_present_modes2_ext(
19635
0
        device: vk::Device,
19636
0
        p_surface_info: *const vk::PhysicalDeviceSurfaceInfo2KHR,
19637
0
        p_modes: *mut vk::DeviceGroupPresentModeFlagsKHR,
19638
0
    ) -> vk::Result {
19639
0
        let global = Self::instance();
19640
0
        // vkGetDeviceGroupSurfacePresentModes2EXT
19641
0
        let device_info = global.get_device_info(device).unwrap();
19642
0
        let dispatch_table = &device_info.dispatch_table.ext_full_screen_exclusive;
19643
0
        let layer_result = device_info
19644
0
            .customized_info
19645
0
            .borrow()
19646
0
            .hooks()
19647
0
            .get_device_group_surface_present_modes2_ext(
19648
0
                unsafe { p_surface_info.as_ref() }.unwrap(),
19649
0
            );
19650
0
        match layer_result {
19651
0
            LayerResult::Handled(res) => match res {
19652
0
                Ok(res) => {
19653
0
                    *unsafe { p_modes.as_mut() }.unwrap() = res;
19654
0
                    vk::Result::SUCCESS
19655
                }
19656
0
                Err(e) => e,
19657
            },
19658
            LayerResult::Unhandled => unsafe {
19659
0
                (dispatch_table.get_device_group_surface_present_modes2_ext)(
19660
0
                    device,
19661
0
                    p_surface_info,
19662
0
                    p_modes,
19663
0
                )
19664
            },
19665
        }
19666
0
    }
19667
0
    extern "system" fn cmd_set_line_stipple_ext(
19668
0
        command_buffer: vk::CommandBuffer,
19669
0
        line_stipple_factor: u32,
19670
0
        line_stipple_pattern: u16,
19671
0
    ) {
19672
0
        let global = Self::instance();
19673
0
        // vkCmdSetLineStippleEXT
19674
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19675
0
        let dispatch_table = &device_info.dispatch_table.ext_line_rasterization;
19676
0
        let layer_result = device_info
19677
0
            .customized_info
19678
0
            .borrow()
19679
0
            .hooks()
19680
0
            .cmd_set_line_stipple_ext(command_buffer, line_stipple_factor, line_stipple_pattern);
19681
0
        match layer_result {
19682
0
            LayerResult::Handled(res) => res,
19683
            LayerResult::Unhandled => unsafe {
19684
0
                (dispatch_table.cmd_set_line_stipple_ext)(
19685
0
                    command_buffer,
19686
0
                    line_stipple_factor,
19687
0
                    line_stipple_pattern,
19688
0
                )
19689
            },
19690
        }
19691
0
    }
19692
0
    extern "system" fn release_swapchain_images_ext(
19693
0
        device: vk::Device,
19694
0
        p_release_info: *const vk::ReleaseSwapchainImagesInfoEXT,
19695
0
    ) -> vk::Result {
19696
0
        let global = Self::instance();
19697
0
        // vkReleaseSwapchainImagesEXT
19698
0
        let device_info = global.get_device_info(device).unwrap();
19699
0
        let dispatch_table = &device_info.dispatch_table.ext_swapchain_maintenance1;
19700
0
        let layer_result = device_info
19701
0
            .customized_info
19702
0
            .borrow()
19703
0
            .hooks()
19704
0
            .release_swapchain_images_ext(unsafe { p_release_info.as_ref() }.unwrap());
19705
0
        match layer_result {
19706
0
            LayerResult::Handled(res) => match res {
19707
0
                Ok(()) => vk::Result::SUCCESS,
19708
0
                Err(e) => e,
19709
            },
19710
            LayerResult::Unhandled => unsafe {
19711
0
                (dispatch_table.release_swapchain_images_ext)(device, p_release_info)
19712
            },
19713
        }
19714
0
    }
19715
0
    extern "system" fn get_generated_commands_memory_requirements_nv(
19716
0
        device: vk::Device,
19717
0
        p_info: *const vk::GeneratedCommandsMemoryRequirementsInfoNV,
19718
0
        p_memory_requirements: *mut vk::MemoryRequirements2,
19719
0
    ) {
19720
0
        let global = Self::instance();
19721
0
        // vkGetGeneratedCommandsMemoryRequirementsNV
19722
0
        let device_info = global.get_device_info(device).unwrap();
19723
0
        let dispatch_table = &device_info.dispatch_table.nv_device_generated_commands;
19724
0
        let layer_result = device_info
19725
0
            .customized_info
19726
0
            .borrow()
19727
0
            .hooks()
19728
0
            .get_generated_commands_memory_requirements_nv(
19729
0
                unsafe { p_info.as_ref() }.unwrap(),
19730
0
                unsafe { ptr_as_uninit_mut(p_memory_requirements) }.unwrap(),
19731
0
            );
19732
0
        match layer_result {
19733
0
            LayerResult::Handled(res) => res,
19734
            LayerResult::Unhandled => unsafe {
19735
0
                (dispatch_table.get_generated_commands_memory_requirements_nv)(
19736
0
                    device,
19737
0
                    p_info,
19738
0
                    p_memory_requirements,
19739
0
                )
19740
            },
19741
        }
19742
0
    }
19743
0
    extern "system" fn cmd_preprocess_generated_commands_nv(
19744
0
        command_buffer: vk::CommandBuffer,
19745
0
        p_generated_commands_info: *const vk::GeneratedCommandsInfoNV,
19746
0
    ) {
19747
0
        let global = Self::instance();
19748
0
        // vkCmdPreprocessGeneratedCommandsNV
19749
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19750
0
        let dispatch_table = &device_info.dispatch_table.nv_device_generated_commands;
19751
0
        let layer_result = device_info
19752
0
            .customized_info
19753
0
            .borrow()
19754
0
            .hooks()
19755
0
            .cmd_preprocess_generated_commands_nv(
19756
0
                command_buffer,
19757
0
                unsafe { p_generated_commands_info.as_ref() }.unwrap(),
19758
0
            );
19759
0
        match layer_result {
19760
0
            LayerResult::Handled(res) => res,
19761
            LayerResult::Unhandled => unsafe {
19762
0
                (dispatch_table.cmd_preprocess_generated_commands_nv)(
19763
0
                    command_buffer,
19764
0
                    p_generated_commands_info,
19765
0
                )
19766
            },
19767
        }
19768
0
    }
19769
0
    extern "system" fn cmd_execute_generated_commands_nv(
19770
0
        command_buffer: vk::CommandBuffer,
19771
0
        is_preprocessed: vk::Bool32,
19772
0
        p_generated_commands_info: *const vk::GeneratedCommandsInfoNV,
19773
0
    ) {
19774
0
        let global = Self::instance();
19775
0
        // vkCmdExecuteGeneratedCommandsNV
19776
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19777
0
        let dispatch_table = &device_info.dispatch_table.nv_device_generated_commands;
19778
0
        let layer_result = device_info
19779
0
            .customized_info
19780
0
            .borrow()
19781
0
            .hooks()
19782
0
            .cmd_execute_generated_commands_nv(
19783
0
                command_buffer,
19784
0
                is_preprocessed == vk::TRUE,
19785
0
                unsafe { p_generated_commands_info.as_ref() }.unwrap(),
19786
0
            );
19787
0
        match layer_result {
19788
0
            LayerResult::Handled(res) => res,
19789
            LayerResult::Unhandled => unsafe {
19790
0
                (dispatch_table.cmd_execute_generated_commands_nv)(
19791
0
                    command_buffer,
19792
0
                    is_preprocessed,
19793
0
                    p_generated_commands_info,
19794
0
                )
19795
            },
19796
        }
19797
0
    }
19798
0
    extern "system" fn cmd_bind_pipeline_shader_group_nv(
19799
0
        command_buffer: vk::CommandBuffer,
19800
0
        pipeline_bind_point: vk::PipelineBindPoint,
19801
0
        pipeline: vk::Pipeline,
19802
0
        group_index: u32,
19803
0
    ) {
19804
0
        let global = Self::instance();
19805
0
        // vkCmdBindPipelineShaderGroupNV
19806
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19807
0
        let dispatch_table = &device_info.dispatch_table.nv_device_generated_commands;
19808
0
        let layer_result = device_info
19809
0
            .customized_info
19810
0
            .borrow()
19811
0
            .hooks()
19812
0
            .cmd_bind_pipeline_shader_group_nv(
19813
0
                command_buffer,
19814
0
                pipeline_bind_point,
19815
0
                pipeline,
19816
0
                group_index,
19817
0
            );
19818
0
        match layer_result {
19819
0
            LayerResult::Handled(res) => res,
19820
            LayerResult::Unhandled => unsafe {
19821
0
                (dispatch_table.cmd_bind_pipeline_shader_group_nv)(
19822
0
                    command_buffer,
19823
0
                    pipeline_bind_point,
19824
0
                    pipeline,
19825
0
                    group_index,
19826
0
                )
19827
            },
19828
        }
19829
0
    }
19830
0
    extern "system" fn create_indirect_commands_layout_nv(
19831
0
        device: vk::Device,
19832
0
        p_create_info: *const vk::IndirectCommandsLayoutCreateInfoNV,
19833
0
        p_allocator: *const vk::AllocationCallbacks,
19834
0
        p_indirect_commands_layout: *mut vk::IndirectCommandsLayoutNV,
19835
0
    ) -> vk::Result {
19836
0
        let global = Self::instance();
19837
0
        // vkCreateIndirectCommandsLayoutNV
19838
0
        let device_info = global.get_device_info(device).unwrap();
19839
0
        let dispatch_table = &device_info.dispatch_table.nv_device_generated_commands;
19840
0
        let layer_result = device_info
19841
0
            .customized_info
19842
0
            .borrow()
19843
0
            .hooks()
19844
0
            .create_indirect_commands_layout_nv(
19845
0
                unsafe { p_create_info.as_ref() }.unwrap(),
19846
0
                unsafe { p_allocator.as_ref() },
19847
0
            );
19848
0
        match layer_result {
19849
0
            LayerResult::Handled(res) => match res {
19850
0
                Ok(res) => {
19851
0
                    *unsafe { p_indirect_commands_layout.as_mut() }.unwrap() = res;
19852
0
                    vk::Result::SUCCESS
19853
                }
19854
0
                Err(e) => e,
19855
            },
19856
            LayerResult::Unhandled => unsafe {
19857
0
                (dispatch_table.create_indirect_commands_layout_nv)(
19858
0
                    device,
19859
0
                    p_create_info,
19860
0
                    p_allocator,
19861
0
                    p_indirect_commands_layout,
19862
0
                )
19863
            },
19864
        }
19865
0
    }
19866
0
    extern "system" fn destroy_indirect_commands_layout_nv(
19867
0
        device: vk::Device,
19868
0
        indirect_commands_layout: vk::IndirectCommandsLayoutNV,
19869
0
        p_allocator: *const vk::AllocationCallbacks,
19870
0
    ) {
19871
0
        let global = Self::instance();
19872
0
        // vkDestroyIndirectCommandsLayoutNV
19873
0
        let device_info = global.get_device_info(device).unwrap();
19874
0
        let dispatch_table = &device_info.dispatch_table.nv_device_generated_commands;
19875
0
        let layer_result = device_info
19876
0
            .customized_info
19877
0
            .borrow()
19878
0
            .hooks()
19879
0
            .destroy_indirect_commands_layout_nv(indirect_commands_layout, unsafe {
19880
0
                p_allocator.as_ref()
19881
0
            });
19882
0
        match layer_result {
19883
0
            LayerResult::Handled(res) => res,
19884
            LayerResult::Unhandled => unsafe {
19885
0
                (dispatch_table.destroy_indirect_commands_layout_nv)(
19886
0
                    device,
19887
0
                    indirect_commands_layout,
19888
0
                    p_allocator,
19889
0
                )
19890
            },
19891
        }
19892
0
    }
19893
0
    extern "system" fn export_metal_objects_ext(
19894
0
        device: vk::Device,
19895
0
        p_metal_objects_info: *mut vk::ExportMetalObjectsInfoEXT,
19896
0
    ) {
19897
0
        let global = Self::instance();
19898
0
        // vkExportMetalObjectsEXT
19899
0
        let device_info = global.get_device_info(device).unwrap();
19900
0
        let dispatch_table = &device_info.dispatch_table.ext_metal_objects;
19901
0
        let layer_result = device_info
19902
0
            .customized_info
19903
0
            .borrow()
19904
0
            .hooks()
19905
0
            .export_metal_objects_ext(unsafe { ptr_as_uninit_mut(p_metal_objects_info) }.unwrap());
19906
0
        match layer_result {
19907
0
            LayerResult::Handled(res) => res,
19908
            LayerResult::Unhandled => unsafe {
19909
0
                (dispatch_table.export_metal_objects_ext)(device, p_metal_objects_info)
19910
            },
19911
        }
19912
0
    }
19913
0
    extern "system" fn get_descriptor_set_layout_size_ext(
19914
0
        device: vk::Device,
19915
0
        layout: vk::DescriptorSetLayout,
19916
0
        p_layout_size_in_bytes: *mut vk::DeviceSize,
19917
0
    ) {
19918
0
        let global = Self::instance();
19919
0
        // vkGetDescriptorSetLayoutSizeEXT
19920
0
        let device_info = global.get_device_info(device).unwrap();
19921
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
19922
0
        let layer_result = device_info
19923
0
            .customized_info
19924
0
            .borrow()
19925
0
            .hooks()
19926
0
            .get_descriptor_set_layout_size_ext(layout);
19927
0
        match layer_result {
19928
0
            LayerResult::Handled(res) => {
19929
0
                *unsafe { p_layout_size_in_bytes.as_mut() }.unwrap() = res;
19930
0
            }
19931
            LayerResult::Unhandled => unsafe {
19932
0
                (dispatch_table.get_descriptor_set_layout_size_ext)(
19933
0
                    device,
19934
0
                    layout,
19935
0
                    p_layout_size_in_bytes,
19936
0
                )
19937
            },
19938
        }
19939
0
    }
19940
0
    extern "system" fn get_descriptor_set_layout_binding_offset_ext(
19941
0
        device: vk::Device,
19942
0
        layout: vk::DescriptorSetLayout,
19943
0
        binding: u32,
19944
0
        p_offset: *mut vk::DeviceSize,
19945
0
    ) {
19946
0
        let global = Self::instance();
19947
0
        // vkGetDescriptorSetLayoutBindingOffsetEXT
19948
0
        let device_info = global.get_device_info(device).unwrap();
19949
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
19950
0
        let layer_result = device_info
19951
0
            .customized_info
19952
0
            .borrow()
19953
0
            .hooks()
19954
0
            .get_descriptor_set_layout_binding_offset_ext(layout, binding);
19955
0
        match layer_result {
19956
0
            LayerResult::Handled(res) => {
19957
0
                *unsafe { p_offset.as_mut() }.unwrap() = res;
19958
0
            }
19959
            LayerResult::Unhandled => unsafe {
19960
0
                (dispatch_table.get_descriptor_set_layout_binding_offset_ext)(
19961
0
                    device, layout, binding, p_offset,
19962
0
                )
19963
            },
19964
        }
19965
0
    }
19966
0
    extern "system" fn get_descriptor_ext(
19967
0
        device: vk::Device,
19968
0
        p_descriptor_info: *const vk::DescriptorGetInfoEXT,
19969
0
        data_size: usize,
19970
0
        p_descriptor: *mut c_void,
19971
0
    ) {
19972
0
        let global = Self::instance();
19973
0
        // vkGetDescriptorEXT
19974
0
        let device_info = global.get_device_info(device).unwrap();
19975
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
19976
0
        let layer_result = device_info
19977
0
            .customized_info
19978
0
            .borrow()
19979
0
            .hooks()
19980
0
            .get_descriptor_ext(unsafe { p_descriptor_info.as_ref() }.unwrap(), unsafe {
19981
0
                uninit_slice_from_raw_parts_mut(p_descriptor as *mut u8, data_size)
19982
0
            });
19983
0
        match layer_result {
19984
0
            LayerResult::Handled(res) => res,
19985
            LayerResult::Unhandled => unsafe {
19986
0
                (dispatch_table.get_descriptor_ext)(
19987
0
                    device,
19988
0
                    p_descriptor_info,
19989
0
                    data_size,
19990
0
                    p_descriptor,
19991
0
                )
19992
            },
19993
        }
19994
0
    }
19995
0
    extern "system" fn cmd_bind_descriptor_buffers_ext(
19996
0
        command_buffer: vk::CommandBuffer,
19997
0
        buffer_count: u32,
19998
0
        p_binding_infos: *const vk::DescriptorBufferBindingInfoEXT,
19999
0
    ) {
20000
0
        let global = Self::instance();
20001
0
        // vkCmdBindDescriptorBuffersEXT
20002
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20003
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20004
0
        let layer_result = device_info
20005
0
            .customized_info
20006
0
            .borrow()
20007
0
            .hooks()
20008
0
            .cmd_bind_descriptor_buffers_ext(command_buffer, unsafe {
20009
0
                slice_from_raw_parts(p_binding_infos, buffer_count)
20010
0
            });
20011
0
        match layer_result {
20012
0
            LayerResult::Handled(res) => res,
20013
            LayerResult::Unhandled => unsafe {
20014
0
                (dispatch_table.cmd_bind_descriptor_buffers_ext)(
20015
0
                    command_buffer,
20016
0
                    buffer_count,
20017
0
                    p_binding_infos,
20018
0
                )
20019
            },
20020
        }
20021
0
    }
20022
0
    extern "system" fn cmd_set_descriptor_buffer_offsets_ext(
20023
0
        command_buffer: vk::CommandBuffer,
20024
0
        pipeline_bind_point: vk::PipelineBindPoint,
20025
0
        layout: vk::PipelineLayout,
20026
0
        first_set: u32,
20027
0
        set_count: u32,
20028
0
        p_buffer_indices: *const u32,
20029
0
        p_offsets: *const vk::DeviceSize,
20030
0
    ) {
20031
0
        let global = Self::instance();
20032
0
        // vkCmdSetDescriptorBufferOffsetsEXT
20033
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20034
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20035
0
        let layer_result = device_info
20036
0
            .customized_info
20037
0
            .borrow()
20038
0
            .hooks()
20039
0
            .cmd_set_descriptor_buffer_offsets_ext(
20040
0
                command_buffer,
20041
0
                pipeline_bind_point,
20042
0
                layout,
20043
0
                first_set,
20044
0
                unsafe { slice_from_raw_parts(p_buffer_indices, set_count) },
20045
0
                unsafe { slice_from_raw_parts(p_offsets, set_count) },
20046
0
            );
20047
0
        match layer_result {
20048
0
            LayerResult::Handled(res) => res,
20049
            LayerResult::Unhandled => unsafe {
20050
0
                (dispatch_table.cmd_set_descriptor_buffer_offsets_ext)(
20051
0
                    command_buffer,
20052
0
                    pipeline_bind_point,
20053
0
                    layout,
20054
0
                    first_set,
20055
0
                    set_count,
20056
0
                    p_buffer_indices,
20057
0
                    p_offsets,
20058
0
                )
20059
            },
20060
        }
20061
0
    }
20062
0
    extern "system" fn cmd_bind_descriptor_buffer_embedded_samplers_ext(
20063
0
        command_buffer: vk::CommandBuffer,
20064
0
        pipeline_bind_point: vk::PipelineBindPoint,
20065
0
        layout: vk::PipelineLayout,
20066
0
        set: u32,
20067
0
    ) {
20068
0
        let global = Self::instance();
20069
0
        // vkCmdBindDescriptorBufferEmbeddedSamplersEXT
20070
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20071
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20072
0
        let layer_result = device_info
20073
0
            .customized_info
20074
0
            .borrow()
20075
0
            .hooks()
20076
0
            .cmd_bind_descriptor_buffer_embedded_samplers_ext(
20077
0
                command_buffer,
20078
0
                pipeline_bind_point,
20079
0
                layout,
20080
0
                set,
20081
0
            );
20082
0
        match layer_result {
20083
0
            LayerResult::Handled(res) => res,
20084
            LayerResult::Unhandled => unsafe {
20085
0
                (dispatch_table.cmd_bind_descriptor_buffer_embedded_samplers_ext)(
20086
0
                    command_buffer,
20087
0
                    pipeline_bind_point,
20088
0
                    layout,
20089
0
                    set,
20090
0
                )
20091
            },
20092
        }
20093
0
    }
20094
0
    extern "system" fn get_buffer_opaque_capture_descriptor_data_ext(
20095
0
        device: vk::Device,
20096
0
        p_info: *const vk::BufferCaptureDescriptorDataInfoEXT,
20097
0
        p_data: *mut c_void,
20098
0
    ) -> vk::Result {
20099
0
        let global = Self::instance();
20100
0
        // vkGetBufferOpaqueCaptureDescriptorDataEXT
20101
0
        let device_info = global.get_device_info(device).unwrap();
20102
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20103
0
        let layer_result = device_info
20104
0
            .customized_info
20105
0
            .borrow()
20106
0
            .hooks()
20107
0
            .get_buffer_opaque_capture_descriptor_data_ext(
20108
0
                unsafe { p_info.as_ref() }.unwrap(),
20109
0
                p_data,
20110
0
            );
20111
0
        match layer_result {
20112
0
            LayerResult::Handled(res) => match res {
20113
0
                Ok(()) => vk::Result::SUCCESS,
20114
0
                Err(e) => e,
20115
            },
20116
            LayerResult::Unhandled => unsafe {
20117
0
                (dispatch_table.get_buffer_opaque_capture_descriptor_data_ext)(
20118
0
                    device, p_info, p_data,
20119
0
                )
20120
            },
20121
        }
20122
0
    }
20123
0
    extern "system" fn get_image_opaque_capture_descriptor_data_ext(
20124
0
        device: vk::Device,
20125
0
        p_info: *const vk::ImageCaptureDescriptorDataInfoEXT,
20126
0
        p_data: *mut c_void,
20127
0
    ) -> vk::Result {
20128
0
        let global = Self::instance();
20129
0
        // vkGetImageOpaqueCaptureDescriptorDataEXT
20130
0
        let device_info = global.get_device_info(device).unwrap();
20131
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20132
0
        let layer_result = device_info
20133
0
            .customized_info
20134
0
            .borrow()
20135
0
            .hooks()
20136
0
            .get_image_opaque_capture_descriptor_data_ext(
20137
0
                unsafe { p_info.as_ref() }.unwrap(),
20138
0
                p_data,
20139
0
            );
20140
0
        match layer_result {
20141
0
            LayerResult::Handled(res) => match res {
20142
0
                Ok(()) => vk::Result::SUCCESS,
20143
0
                Err(e) => e,
20144
            },
20145
            LayerResult::Unhandled => unsafe {
20146
0
                (dispatch_table.get_image_opaque_capture_descriptor_data_ext)(
20147
0
                    device, p_info, p_data,
20148
0
                )
20149
            },
20150
        }
20151
0
    }
20152
0
    extern "system" fn get_image_view_opaque_capture_descriptor_data_ext(
20153
0
        device: vk::Device,
20154
0
        p_info: *const vk::ImageViewCaptureDescriptorDataInfoEXT,
20155
0
        p_data: *mut c_void,
20156
0
    ) -> vk::Result {
20157
0
        let global = Self::instance();
20158
0
        // vkGetImageViewOpaqueCaptureDescriptorDataEXT
20159
0
        let device_info = global.get_device_info(device).unwrap();
20160
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20161
0
        let layer_result = device_info
20162
0
            .customized_info
20163
0
            .borrow()
20164
0
            .hooks()
20165
0
            .get_image_view_opaque_capture_descriptor_data_ext(
20166
0
                unsafe { p_info.as_ref() }.unwrap(),
20167
0
                p_data,
20168
0
            );
20169
0
        match layer_result {
20170
0
            LayerResult::Handled(res) => match res {
20171
0
                Ok(()) => vk::Result::SUCCESS,
20172
0
                Err(e) => e,
20173
            },
20174
            LayerResult::Unhandled => unsafe {
20175
0
                (dispatch_table.get_image_view_opaque_capture_descriptor_data_ext)(
20176
0
                    device, p_info, p_data,
20177
0
                )
20178
            },
20179
        }
20180
0
    }
20181
0
    extern "system" fn get_sampler_opaque_capture_descriptor_data_ext(
20182
0
        device: vk::Device,
20183
0
        p_info: *const vk::SamplerCaptureDescriptorDataInfoEXT,
20184
0
        p_data: *mut c_void,
20185
0
    ) -> vk::Result {
20186
0
        let global = Self::instance();
20187
0
        // vkGetSamplerOpaqueCaptureDescriptorDataEXT
20188
0
        let device_info = global.get_device_info(device).unwrap();
20189
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20190
0
        let layer_result = device_info
20191
0
            .customized_info
20192
0
            .borrow()
20193
0
            .hooks()
20194
0
            .get_sampler_opaque_capture_descriptor_data_ext(
20195
0
                unsafe { p_info.as_ref() }.unwrap(),
20196
0
                p_data,
20197
0
            );
20198
0
        match layer_result {
20199
0
            LayerResult::Handled(res) => match res {
20200
0
                Ok(()) => vk::Result::SUCCESS,
20201
0
                Err(e) => e,
20202
            },
20203
            LayerResult::Unhandled => unsafe {
20204
0
                (dispatch_table.get_sampler_opaque_capture_descriptor_data_ext)(
20205
0
                    device, p_info, p_data,
20206
0
                )
20207
            },
20208
        }
20209
0
    }
20210
0
    extern "system" fn get_acceleration_structure_opaque_capture_descriptor_data_ext(
20211
0
        device: vk::Device,
20212
0
        p_info: *const vk::AccelerationStructureCaptureDescriptorDataInfoEXT,
20213
0
        p_data: *mut c_void,
20214
0
    ) -> vk::Result {
20215
0
        let global = Self::instance();
20216
0
        // vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT
20217
0
        let device_info = global.get_device_info(device).unwrap();
20218
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20219
0
        let layer_result = device_info
20220
0
            .customized_info
20221
0
            .borrow()
20222
0
            .hooks()
20223
0
            .get_acceleration_structure_opaque_capture_descriptor_data_ext(
20224
0
                unsafe { p_info.as_ref() }.unwrap(),
20225
0
                p_data,
20226
0
            );
20227
0
        match layer_result {
20228
0
            LayerResult::Handled(res) => match res {
20229
0
                Ok(()) => vk::Result::SUCCESS,
20230
0
                Err(e) => e,
20231
            },
20232
            LayerResult::Unhandled => unsafe {
20233
0
                (dispatch_table.get_acceleration_structure_opaque_capture_descriptor_data_ext)(
20234
0
                    device, p_info, p_data,
20235
0
                )
20236
            },
20237
        }
20238
0
    }
20239
0
    extern "system" fn cmd_set_fragment_shading_rate_enum_nv(
20240
0
        command_buffer: vk::CommandBuffer,
20241
0
        shading_rate: vk::FragmentShadingRateNV,
20242
0
        combiner_ops: *const [vk::FragmentShadingRateCombinerOpKHR; 2],
20243
0
    ) {
20244
0
        let global = Self::instance();
20245
0
        // vkCmdSetFragmentShadingRateEnumNV
20246
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20247
0
        let dispatch_table = &device_info.dispatch_table.nv_fragment_shading_rate_enums;
20248
0
        let layer_result = device_info
20249
0
            .customized_info
20250
0
            .borrow()
20251
0
            .hooks()
20252
0
            .cmd_set_fragment_shading_rate_enum_nv(
20253
0
                command_buffer,
20254
0
                shading_rate,
20255
0
                unsafe { combiner_ops.as_ref() }.unwrap(),
20256
0
            );
20257
0
        match layer_result {
20258
0
            LayerResult::Handled(res) => res,
20259
            LayerResult::Unhandled => unsafe {
20260
0
                (dispatch_table.cmd_set_fragment_shading_rate_enum_nv)(
20261
0
                    command_buffer,
20262
0
                    shading_rate,
20263
0
                    combiner_ops,
20264
0
                )
20265
            },
20266
        }
20267
0
    }
20268
0
    extern "system" fn get_image_subresource_layout2_ext(
20269
0
        device: vk::Device,
20270
0
        image: vk::Image,
20271
0
        p_subresource: *const vk::ImageSubresource2EXT,
20272
0
        p_layout: *mut vk::SubresourceLayout2EXT,
20273
0
    ) {
20274
0
        let global = Self::instance();
20275
0
        // vkGetImageSubresourceLayout2EXT
20276
0
        let device_info = global.get_device_info(device).unwrap();
20277
0
        let dispatch_table = &device_info.dispatch_table.ext_image_compression_control;
20278
0
        let layer_result = device_info
20279
0
            .customized_info
20280
0
            .borrow()
20281
0
            .hooks()
20282
0
            .get_image_subresource_layout2_ext(
20283
0
                image,
20284
0
                unsafe { p_subresource.as_ref() }.unwrap(),
20285
0
                unsafe { ptr_as_uninit_mut(p_layout) }.unwrap(),
20286
0
            );
20287
0
        match layer_result {
20288
0
            LayerResult::Handled(res) => res,
20289
            LayerResult::Unhandled => unsafe {
20290
0
                (dispatch_table.get_image_subresource_layout2_ext)(
20291
0
                    device,
20292
0
                    image,
20293
0
                    p_subresource,
20294
0
                    p_layout,
20295
0
                )
20296
            },
20297
        }
20298
0
    }
20299
0
    extern "system" fn cmd_set_vertex_input_ext(
20300
0
        command_buffer: vk::CommandBuffer,
20301
0
        vertex_binding_description_count: u32,
20302
0
        p_vertex_binding_descriptions: *const vk::VertexInputBindingDescription2EXT,
20303
0
        vertex_attribute_description_count: u32,
20304
0
        p_vertex_attribute_descriptions: *const vk::VertexInputAttributeDescription2EXT,
20305
0
    ) {
20306
0
        let global = Self::instance();
20307
0
        // vkCmdSetVertexInputEXT
20308
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20309
0
        let dispatch_table = &device_info.dispatch_table.ext_vertex_input_dynamic_state;
20310
0
        let layer_result = device_info
20311
0
            .customized_info
20312
0
            .borrow()
20313
0
            .hooks()
20314
0
            .cmd_set_vertex_input_ext(
20315
0
                command_buffer,
20316
0
                unsafe {
20317
0
                    slice_from_raw_parts(
20318
0
                        p_vertex_binding_descriptions,
20319
0
                        vertex_binding_description_count,
20320
0
                    )
20321
0
                },
20322
0
                unsafe {
20323
0
                    slice_from_raw_parts(
20324
0
                        p_vertex_attribute_descriptions,
20325
0
                        vertex_attribute_description_count,
20326
0
                    )
20327
0
                },
20328
0
            );
20329
0
        match layer_result {
20330
0
            LayerResult::Handled(res) => res,
20331
            LayerResult::Unhandled => unsafe {
20332
0
                (dispatch_table.cmd_set_vertex_input_ext)(
20333
0
                    command_buffer,
20334
0
                    vertex_binding_description_count,
20335
0
                    p_vertex_binding_descriptions,
20336
0
                    vertex_attribute_description_count,
20337
0
                    p_vertex_attribute_descriptions,
20338
0
                )
20339
            },
20340
        }
20341
0
    }
20342
0
    extern "system" fn get_memory_zircon_handle_fuchsia(
20343
0
        device: vk::Device,
20344
0
        p_get_zircon_handle_info: *const vk::MemoryGetZirconHandleInfoFUCHSIA,
20345
0
        p_zircon_handle: *mut vk::zx_handle_t,
20346
0
    ) -> vk::Result {
20347
0
        let global = Self::instance();
20348
0
        // vkGetMemoryZirconHandleFUCHSIA
20349
0
        let device_info = global.get_device_info(device).unwrap();
20350
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_external_memory;
20351
0
        let layer_result = device_info
20352
0
            .customized_info
20353
0
            .borrow()
20354
0
            .hooks()
20355
0
            .get_memory_zircon_handle_fuchsia(
20356
0
                unsafe { p_get_zircon_handle_info.as_ref() }.unwrap(),
20357
0
            );
20358
0
        match layer_result {
20359
0
            LayerResult::Handled(res) => match res {
20360
0
                Ok(res) => {
20361
0
                    *unsafe { p_zircon_handle.as_mut() }.unwrap() = res;
20362
0
                    vk::Result::SUCCESS
20363
                }
20364
0
                Err(e) => e,
20365
            },
20366
            LayerResult::Unhandled => unsafe {
20367
0
                (dispatch_table.get_memory_zircon_handle_fuchsia)(
20368
0
                    device,
20369
0
                    p_get_zircon_handle_info,
20370
0
                    p_zircon_handle,
20371
0
                )
20372
            },
20373
        }
20374
0
    }
20375
0
    extern "system" fn get_memory_zircon_handle_properties_fuchsia(
20376
0
        device: vk::Device,
20377
0
        handle_type: vk::ExternalMemoryHandleTypeFlags,
20378
0
        zircon_handle: vk::zx_handle_t,
20379
0
        p_memory_zircon_handle_properties: *mut vk::MemoryZirconHandlePropertiesFUCHSIA,
20380
0
    ) -> vk::Result {
20381
0
        let global = Self::instance();
20382
0
        // vkGetMemoryZirconHandlePropertiesFUCHSIA
20383
0
        let device_info = global.get_device_info(device).unwrap();
20384
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_external_memory;
20385
0
        let layer_result = device_info
20386
0
            .customized_info
20387
0
            .borrow()
20388
0
            .hooks()
20389
0
            .get_memory_zircon_handle_properties_fuchsia(
20390
0
                handle_type,
20391
0
                zircon_handle,
20392
0
                unsafe { ptr_as_uninit_mut(p_memory_zircon_handle_properties) }.unwrap(),
20393
0
            );
20394
0
        match layer_result {
20395
0
            LayerResult::Handled(res) => match res {
20396
0
                Ok(()) => vk::Result::SUCCESS,
20397
0
                Err(e) => e,
20398
            },
20399
            LayerResult::Unhandled => unsafe {
20400
0
                (dispatch_table.get_memory_zircon_handle_properties_fuchsia)(
20401
0
                    device,
20402
0
                    handle_type,
20403
0
                    zircon_handle,
20404
0
                    p_memory_zircon_handle_properties,
20405
0
                )
20406
            },
20407
        }
20408
0
    }
20409
0
    extern "system" fn import_semaphore_zircon_handle_fuchsia(
20410
0
        device: vk::Device,
20411
0
        p_import_semaphore_zircon_handle_info: *const vk::ImportSemaphoreZirconHandleInfoFUCHSIA,
20412
0
    ) -> vk::Result {
20413
0
        let global = Self::instance();
20414
0
        // vkImportSemaphoreZirconHandleFUCHSIA
20415
0
        let device_info = global.get_device_info(device).unwrap();
20416
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_external_semaphore;
20417
0
        let layer_result = device_info
20418
0
            .customized_info
20419
0
            .borrow()
20420
0
            .hooks()
20421
0
            .import_semaphore_zircon_handle_fuchsia(
20422
0
                unsafe { p_import_semaphore_zircon_handle_info.as_ref() }.unwrap(),
20423
0
            );
20424
0
        match layer_result {
20425
0
            LayerResult::Handled(res) => match res {
20426
0
                Ok(()) => vk::Result::SUCCESS,
20427
0
                Err(e) => e,
20428
            },
20429
            LayerResult::Unhandled => unsafe {
20430
0
                (dispatch_table.import_semaphore_zircon_handle_fuchsia)(
20431
0
                    device,
20432
0
                    p_import_semaphore_zircon_handle_info,
20433
0
                )
20434
            },
20435
        }
20436
0
    }
20437
0
    extern "system" fn get_semaphore_zircon_handle_fuchsia(
20438
0
        device: vk::Device,
20439
0
        p_get_zircon_handle_info: *const vk::SemaphoreGetZirconHandleInfoFUCHSIA,
20440
0
        p_zircon_handle: *mut vk::zx_handle_t,
20441
0
    ) -> vk::Result {
20442
0
        let global = Self::instance();
20443
0
        // vkGetSemaphoreZirconHandleFUCHSIA
20444
0
        let device_info = global.get_device_info(device).unwrap();
20445
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_external_semaphore;
20446
0
        let layer_result = device_info
20447
0
            .customized_info
20448
0
            .borrow()
20449
0
            .hooks()
20450
0
            .get_semaphore_zircon_handle_fuchsia(
20451
0
                unsafe { p_get_zircon_handle_info.as_ref() }.unwrap(),
20452
0
            );
20453
0
        match layer_result {
20454
0
            LayerResult::Handled(res) => match res {
20455
0
                Ok(res) => {
20456
0
                    *unsafe { p_zircon_handle.as_mut() }.unwrap() = res;
20457
0
                    vk::Result::SUCCESS
20458
                }
20459
0
                Err(e) => e,
20460
            },
20461
            LayerResult::Unhandled => unsafe {
20462
0
                (dispatch_table.get_semaphore_zircon_handle_fuchsia)(
20463
0
                    device,
20464
0
                    p_get_zircon_handle_info,
20465
0
                    p_zircon_handle,
20466
0
                )
20467
            },
20468
        }
20469
0
    }
20470
0
    extern "system" fn create_buffer_collection_fuchsia(
20471
0
        device: vk::Device,
20472
0
        p_create_info: *const vk::BufferCollectionCreateInfoFUCHSIA,
20473
0
        p_allocator: *const vk::AllocationCallbacks,
20474
0
        p_collection: *mut vk::BufferCollectionFUCHSIA,
20475
0
    ) -> vk::Result {
20476
0
        let global = Self::instance();
20477
0
        // vkCreateBufferCollectionFUCHSIA
20478
0
        let device_info = global.get_device_info(device).unwrap();
20479
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_buffer_collection;
20480
0
        let layer_result = device_info
20481
0
            .customized_info
20482
0
            .borrow()
20483
0
            .hooks()
20484
0
            .create_buffer_collection_fuchsia(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
20485
0
                p_allocator.as_ref()
20486
0
            });
20487
0
        match layer_result {
20488
0
            LayerResult::Handled(res) => match res {
20489
0
                Ok(res) => {
20490
0
                    *unsafe { p_collection.as_mut() }.unwrap() = res;
20491
0
                    vk::Result::SUCCESS
20492
                }
20493
0
                Err(e) => e,
20494
            },
20495
            LayerResult::Unhandled => unsafe {
20496
0
                (dispatch_table.create_buffer_collection_fuchsia)(
20497
0
                    device,
20498
0
                    p_create_info,
20499
0
                    p_allocator,
20500
0
                    p_collection,
20501
0
                )
20502
            },
20503
        }
20504
0
    }
20505
0
    extern "system" fn set_buffer_collection_image_constraints_fuchsia(
20506
0
        device: vk::Device,
20507
0
        collection: vk::BufferCollectionFUCHSIA,
20508
0
        p_image_constraints_info: *const vk::ImageConstraintsInfoFUCHSIA,
20509
0
    ) -> vk::Result {
20510
0
        let global = Self::instance();
20511
0
        // vkSetBufferCollectionImageConstraintsFUCHSIA
20512
0
        let device_info = global.get_device_info(device).unwrap();
20513
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_buffer_collection;
20514
0
        let layer_result = device_info
20515
0
            .customized_info
20516
0
            .borrow()
20517
0
            .hooks()
20518
0
            .set_buffer_collection_image_constraints_fuchsia(
20519
0
                collection,
20520
0
                unsafe { p_image_constraints_info.as_ref() }.unwrap(),
20521
0
            );
20522
0
        match layer_result {
20523
0
            LayerResult::Handled(res) => match res {
20524
0
                Ok(()) => vk::Result::SUCCESS,
20525
0
                Err(e) => e,
20526
            },
20527
            LayerResult::Unhandled => unsafe {
20528
0
                (dispatch_table.set_buffer_collection_image_constraints_fuchsia)(
20529
0
                    device,
20530
0
                    collection,
20531
0
                    p_image_constraints_info,
20532
0
                )
20533
            },
20534
        }
20535
0
    }
20536
0
    extern "system" fn set_buffer_collection_buffer_constraints_fuchsia(
20537
0
        device: vk::Device,
20538
0
        collection: vk::BufferCollectionFUCHSIA,
20539
0
        p_buffer_constraints_info: *const vk::BufferConstraintsInfoFUCHSIA,
20540
0
    ) -> vk::Result {
20541
0
        let global = Self::instance();
20542
0
        // vkSetBufferCollectionBufferConstraintsFUCHSIA
20543
0
        let device_info = global.get_device_info(device).unwrap();
20544
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_buffer_collection;
20545
0
        let layer_result = device_info
20546
0
            .customized_info
20547
0
            .borrow()
20548
0
            .hooks()
20549
0
            .set_buffer_collection_buffer_constraints_fuchsia(
20550
0
                collection,
20551
0
                unsafe { p_buffer_constraints_info.as_ref() }.unwrap(),
20552
0
            );
20553
0
        match layer_result {
20554
0
            LayerResult::Handled(res) => match res {
20555
0
                Ok(()) => vk::Result::SUCCESS,
20556
0
                Err(e) => e,
20557
            },
20558
            LayerResult::Unhandled => unsafe {
20559
0
                (dispatch_table.set_buffer_collection_buffer_constraints_fuchsia)(
20560
0
                    device,
20561
0
                    collection,
20562
0
                    p_buffer_constraints_info,
20563
0
                )
20564
            },
20565
        }
20566
0
    }
20567
0
    extern "system" fn destroy_buffer_collection_fuchsia(
20568
0
        device: vk::Device,
20569
0
        collection: vk::BufferCollectionFUCHSIA,
20570
0
        p_allocator: *const vk::AllocationCallbacks,
20571
0
    ) {
20572
0
        let global = Self::instance();
20573
0
        // vkDestroyBufferCollectionFUCHSIA
20574
0
        let device_info = global.get_device_info(device).unwrap();
20575
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_buffer_collection;
20576
0
        let layer_result = device_info
20577
0
            .customized_info
20578
0
            .borrow()
20579
0
            .hooks()
20580
0
            .destroy_buffer_collection_fuchsia(collection, unsafe { p_allocator.as_ref() });
20581
0
        match layer_result {
20582
0
            LayerResult::Handled(res) => res,
20583
            LayerResult::Unhandled => unsafe {
20584
0
                (dispatch_table.destroy_buffer_collection_fuchsia)(device, collection, p_allocator)
20585
            },
20586
        }
20587
0
    }
20588
0
    extern "system" fn get_buffer_collection_properties_fuchsia(
20589
0
        device: vk::Device,
20590
0
        collection: vk::BufferCollectionFUCHSIA,
20591
0
        p_properties: *mut vk::BufferCollectionPropertiesFUCHSIA,
20592
0
    ) -> vk::Result {
20593
0
        let global = Self::instance();
20594
0
        // vkGetBufferCollectionPropertiesFUCHSIA
20595
0
        let device_info = global.get_device_info(device).unwrap();
20596
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_buffer_collection;
20597
0
        let layer_result = device_info
20598
0
            .customized_info
20599
0
            .borrow()
20600
0
            .hooks()
20601
0
            .get_buffer_collection_properties_fuchsia(
20602
0
                collection,
20603
0
                unsafe { ptr_as_uninit_mut(p_properties) }.unwrap(),
20604
0
            );
20605
0
        match layer_result {
20606
0
            LayerResult::Handled(res) => match res {
20607
0
                Ok(()) => vk::Result::SUCCESS,
20608
0
                Err(e) => e,
20609
            },
20610
            LayerResult::Unhandled => unsafe {
20611
0
                (dispatch_table.get_buffer_collection_properties_fuchsia)(
20612
0
                    device,
20613
0
                    collection,
20614
0
                    p_properties,
20615
0
                )
20616
            },
20617
        }
20618
0
    }
20619
0
    extern "system" fn get_device_subpass_shading_max_workgroup_size_huawei(
20620
0
        device: vk::Device,
20621
0
        renderpass: vk::RenderPass,
20622
0
        p_max_workgroup_size: *mut vk::Extent2D,
20623
0
    ) -> vk::Result {
20624
0
        let global = Self::instance();
20625
0
        // vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI
20626
0
        let device_info = global.get_device_info(device).unwrap();
20627
0
        let dispatch_table = &device_info.dispatch_table.huawei_subpass_shading;
20628
0
        let layer_result = device_info
20629
0
            .customized_info
20630
0
            .borrow()
20631
0
            .hooks()
20632
0
            .get_device_subpass_shading_max_workgroup_size_huawei(
20633
0
                renderpass,
20634
0
                unsafe { ptr_as_uninit_mut(p_max_workgroup_size) }.unwrap(),
20635
0
            );
20636
0
        match layer_result {
20637
0
            LayerResult::Handled(res) => match res {
20638
0
                Ok(()) => vk::Result::SUCCESS,
20639
0
                Err(e) => e,
20640
            },
20641
            LayerResult::Unhandled => unsafe {
20642
0
                (dispatch_table.get_device_subpass_shading_max_workgroup_size_huawei)(
20643
0
                    device,
20644
0
                    renderpass,
20645
0
                    p_max_workgroup_size,
20646
0
                )
20647
            },
20648
        }
20649
0
    }
20650
0
    extern "system" fn cmd_subpass_shading_huawei(command_buffer: vk::CommandBuffer) {
20651
0
        let global = Self::instance();
20652
0
        // vkCmdSubpassShadingHUAWEI
20653
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20654
0
        let dispatch_table = &device_info.dispatch_table.huawei_subpass_shading;
20655
0
        let layer_result = device_info
20656
0
            .customized_info
20657
0
            .borrow()
20658
0
            .hooks()
20659
0
            .cmd_subpass_shading_huawei(command_buffer);
20660
0
        match layer_result {
20661
0
            LayerResult::Handled(res) => res,
20662
            LayerResult::Unhandled => unsafe {
20663
0
                (dispatch_table.cmd_subpass_shading_huawei)(command_buffer)
20664
            },
20665
        }
20666
0
    }
20667
0
    extern "system" fn cmd_bind_invocation_mask_huawei(
20668
0
        command_buffer: vk::CommandBuffer,
20669
0
        image_view: vk::ImageView,
20670
0
        image_layout: vk::ImageLayout,
20671
0
    ) {
20672
0
        let global = Self::instance();
20673
0
        // vkCmdBindInvocationMaskHUAWEI
20674
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20675
0
        let dispatch_table = &device_info.dispatch_table.huawei_invocation_mask;
20676
0
        let layer_result = device_info
20677
0
            .customized_info
20678
0
            .borrow()
20679
0
            .hooks()
20680
0
            .cmd_bind_invocation_mask_huawei(command_buffer, image_view, image_layout);
20681
0
        match layer_result {
20682
0
            LayerResult::Handled(res) => res,
20683
            LayerResult::Unhandled => unsafe {
20684
0
                (dispatch_table.cmd_bind_invocation_mask_huawei)(
20685
0
                    command_buffer,
20686
0
                    image_view,
20687
0
                    image_layout,
20688
0
                )
20689
            },
20690
        }
20691
0
    }
20692
0
    extern "system" fn get_memory_remote_address_nv(
20693
0
        device: vk::Device,
20694
0
        p_memory_get_remote_address_info: *const vk::MemoryGetRemoteAddressInfoNV,
20695
0
        p_address: *mut vk::RemoteAddressNV,
20696
0
    ) -> vk::Result {
20697
0
        let global = Self::instance();
20698
0
        // vkGetMemoryRemoteAddressNV
20699
0
        let device_info = global.get_device_info(device).unwrap();
20700
0
        let dispatch_table = &device_info.dispatch_table.nv_external_memory_rdma;
20701
0
        let layer_result = device_info
20702
0
            .customized_info
20703
0
            .borrow()
20704
0
            .hooks()
20705
0
            .get_memory_remote_address_nv(
20706
0
                unsafe { p_memory_get_remote_address_info.as_ref() }.unwrap(),
20707
0
            );
20708
0
        match layer_result {
20709
0
            LayerResult::Handled(res) => match res {
20710
0
                Ok(res) => {
20711
0
                    *unsafe { p_address.as_mut() }.unwrap() = res;
20712
0
                    vk::Result::SUCCESS
20713
                }
20714
0
                Err(e) => e,
20715
            },
20716
            LayerResult::Unhandled => unsafe {
20717
0
                (dispatch_table.get_memory_remote_address_nv)(
20718
0
                    device,
20719
0
                    p_memory_get_remote_address_info,
20720
0
                    p_address,
20721
0
                )
20722
            },
20723
        }
20724
0
    }
20725
0
    extern "system" fn get_pipeline_properties_ext(
20726
0
        device: vk::Device,
20727
0
        p_pipeline_info: *const vk::PipelineInfoEXT,
20728
0
        p_pipeline_properties: *mut vk::BaseOutStructure,
20729
0
    ) -> vk::Result {
20730
0
        let global = Self::instance();
20731
0
        // vkGetPipelinePropertiesEXT
20732
0
        let device_info = global.get_device_info(device).unwrap();
20733
0
        let dispatch_table = &device_info.dispatch_table.ext_pipeline_properties;
20734
0
        let layer_result = device_info
20735
0
            .customized_info
20736
0
            .borrow()
20737
0
            .hooks()
20738
0
            .get_pipeline_properties_ext(
20739
0
                unsafe { p_pipeline_info.as_ref() }.unwrap(),
20740
0
                unsafe { ptr_as_uninit_mut(p_pipeline_properties) }.unwrap(),
20741
0
            );
20742
0
        match layer_result {
20743
0
            LayerResult::Handled(res) => match res {
20744
0
                Ok(()) => vk::Result::SUCCESS,
20745
0
                Err(e) => e,
20746
            },
20747
            LayerResult::Unhandled => unsafe {
20748
0
                (dispatch_table.get_pipeline_properties_ext)(
20749
0
                    device,
20750
0
                    p_pipeline_info,
20751
0
                    p_pipeline_properties,
20752
0
                )
20753
            },
20754
        }
20755
0
    }
20756
0
    extern "system" fn cmd_set_patch_control_points_ext(
20757
0
        command_buffer: vk::CommandBuffer,
20758
0
        patch_control_points: u32,
20759
0
    ) {
20760
0
        let global = Self::instance();
20761
0
        // vkCmdSetPatchControlPointsEXT
20762
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20763
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state2;
20764
0
        let layer_result = device_info
20765
0
            .customized_info
20766
0
            .borrow()
20767
0
            .hooks()
20768
0
            .cmd_set_patch_control_points_ext(command_buffer, patch_control_points);
20769
0
        match layer_result {
20770
0
            LayerResult::Handled(res) => res,
20771
            LayerResult::Unhandled => unsafe {
20772
0
                (dispatch_table.cmd_set_patch_control_points_ext)(
20773
0
                    command_buffer,
20774
0
                    patch_control_points,
20775
0
                )
20776
            },
20777
        }
20778
0
    }
20779
0
    extern "system" fn cmd_set_logic_op_ext(
20780
0
        command_buffer: vk::CommandBuffer,
20781
0
        logic_op: vk::LogicOp,
20782
0
    ) {
20783
0
        let global = Self::instance();
20784
0
        // vkCmdSetLogicOpEXT
20785
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20786
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state2;
20787
0
        let layer_result = device_info
20788
0
            .customized_info
20789
0
            .borrow()
20790
0
            .hooks()
20791
0
            .cmd_set_logic_op_ext(command_buffer, logic_op);
20792
0
        match layer_result {
20793
0
            LayerResult::Handled(res) => res,
20794
            LayerResult::Unhandled => unsafe {
20795
0
                (dispatch_table.cmd_set_logic_op_ext)(command_buffer, logic_op)
20796
            },
20797
        }
20798
0
    }
20799
0
    extern "system" fn cmd_set_color_write_enable_ext(
20800
0
        command_buffer: vk::CommandBuffer,
20801
0
        attachment_count: u32,
20802
0
        p_color_write_enables: *const vk::Bool32,
20803
0
    ) {
20804
0
        let global = Self::instance();
20805
0
        // vkCmdSetColorWriteEnableEXT
20806
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20807
0
        let dispatch_table = &device_info.dispatch_table.ext_color_write_enable;
20808
0
        let layer_result = device_info
20809
0
            .customized_info
20810
0
            .borrow()
20811
0
            .hooks()
20812
0
            .cmd_set_color_write_enable_ext(command_buffer, unsafe {
20813
0
                bool_iterator_from_raw_parts(p_color_write_enables, attachment_count)
20814
0
            });
20815
0
        match layer_result {
20816
0
            LayerResult::Handled(res) => res,
20817
            LayerResult::Unhandled => unsafe {
20818
0
                (dispatch_table.cmd_set_color_write_enable_ext)(
20819
0
                    command_buffer,
20820
0
                    attachment_count,
20821
0
                    p_color_write_enables,
20822
0
                )
20823
            },
20824
        }
20825
0
    }
20826
0
    extern "system" fn cmd_draw_multi_ext(
20827
0
        command_buffer: vk::CommandBuffer,
20828
0
        draw_count: u32,
20829
0
        p_vertex_info: *const vk::MultiDrawInfoEXT,
20830
0
        instance_count: u32,
20831
0
        first_instance: u32,
20832
0
        stride: u32,
20833
0
    ) {
20834
0
        let global = Self::instance();
20835
0
        // vkCmdDrawMultiEXT
20836
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20837
0
        let dispatch_table = &device_info.dispatch_table.ext_multi_draw;
20838
0
        let layer_result = device_info
20839
0
            .customized_info
20840
0
            .borrow()
20841
0
            .hooks()
20842
0
            .cmd_draw_multi_ext(
20843
0
                command_buffer,
20844
0
                unsafe { slice_from_raw_parts(p_vertex_info, draw_count) },
20845
0
                instance_count,
20846
0
                first_instance,
20847
0
                stride,
20848
0
            );
20849
0
        match layer_result {
20850
0
            LayerResult::Handled(res) => res,
20851
            LayerResult::Unhandled => unsafe {
20852
0
                (dispatch_table.cmd_draw_multi_ext)(
20853
0
                    command_buffer,
20854
0
                    draw_count,
20855
0
                    p_vertex_info,
20856
0
                    instance_count,
20857
0
                    first_instance,
20858
0
                    stride,
20859
0
                )
20860
            },
20861
        }
20862
0
    }
20863
0
    extern "system" fn cmd_draw_multi_indexed_ext(
20864
0
        command_buffer: vk::CommandBuffer,
20865
0
        draw_count: u32,
20866
0
        p_index_info: *const vk::MultiDrawIndexedInfoEXT,
20867
0
        instance_count: u32,
20868
0
        first_instance: u32,
20869
0
        stride: u32,
20870
0
        p_vertex_offset: *const i32,
20871
0
    ) {
20872
0
        let global = Self::instance();
20873
0
        // vkCmdDrawMultiIndexedEXT
20874
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20875
0
        let dispatch_table = &device_info.dispatch_table.ext_multi_draw;
20876
0
        let layer_result = device_info
20877
0
            .customized_info
20878
0
            .borrow()
20879
0
            .hooks()
20880
0
            .cmd_draw_multi_indexed_ext(
20881
0
                command_buffer,
20882
0
                unsafe { slice_from_raw_parts(p_index_info, draw_count) },
20883
0
                instance_count,
20884
0
                first_instance,
20885
0
                stride,
20886
0
                unsafe { p_vertex_offset.as_ref() },
20887
0
            );
20888
0
        match layer_result {
20889
0
            LayerResult::Handled(res) => res,
20890
            LayerResult::Unhandled => unsafe {
20891
0
                (dispatch_table.cmd_draw_multi_indexed_ext)(
20892
0
                    command_buffer,
20893
0
                    draw_count,
20894
0
                    p_index_info,
20895
0
                    instance_count,
20896
0
                    first_instance,
20897
0
                    stride,
20898
0
                    p_vertex_offset,
20899
0
                )
20900
            },
20901
        }
20902
0
    }
20903
0
    extern "system" fn create_micromap_ext(
20904
0
        device: vk::Device,
20905
0
        p_create_info: *const vk::MicromapCreateInfoEXT,
20906
0
        p_allocator: *const vk::AllocationCallbacks,
20907
0
        p_micromap: *mut vk::MicromapEXT,
20908
0
    ) -> vk::Result {
20909
0
        let global = Self::instance();
20910
0
        // vkCreateMicromapEXT
20911
0
        let device_info = global.get_device_info(device).unwrap();
20912
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
20913
0
        let layer_result = device_info
20914
0
            .customized_info
20915
0
            .borrow()
20916
0
            .hooks()
20917
0
            .create_micromap_ext(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
20918
0
                p_allocator.as_ref()
20919
0
            });
20920
0
        match layer_result {
20921
0
            LayerResult::Handled(res) => match res {
20922
0
                Ok(res) => {
20923
0
                    *unsafe { p_micromap.as_mut() }.unwrap() = res;
20924
0
                    vk::Result::SUCCESS
20925
                }
20926
0
                Err(e) => e,
20927
            },
20928
            LayerResult::Unhandled => unsafe {
20929
0
                (dispatch_table.create_micromap_ext)(device, p_create_info, p_allocator, p_micromap)
20930
            },
20931
        }
20932
0
    }
20933
0
    extern "system" fn destroy_micromap_ext(
20934
0
        device: vk::Device,
20935
0
        micromap: vk::MicromapEXT,
20936
0
        p_allocator: *const vk::AllocationCallbacks,
20937
0
    ) {
20938
0
        let global = Self::instance();
20939
0
        // vkDestroyMicromapEXT
20940
0
        let device_info = global.get_device_info(device).unwrap();
20941
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
20942
0
        let layer_result = device_info
20943
0
            .customized_info
20944
0
            .borrow()
20945
0
            .hooks()
20946
0
            .destroy_micromap_ext(micromap, unsafe { p_allocator.as_ref() });
20947
0
        match layer_result {
20948
0
            LayerResult::Handled(res) => res,
20949
            LayerResult::Unhandled => unsafe {
20950
0
                (dispatch_table.destroy_micromap_ext)(device, micromap, p_allocator)
20951
            },
20952
        }
20953
0
    }
20954
0
    extern "system" fn cmd_build_micromaps_ext(
20955
0
        command_buffer: vk::CommandBuffer,
20956
0
        info_count: u32,
20957
0
        p_infos: *const vk::MicromapBuildInfoEXT,
20958
0
    ) {
20959
0
        let global = Self::instance();
20960
0
        // vkCmdBuildMicromapsEXT
20961
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20962
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
20963
0
        let layer_result = device_info
20964
0
            .customized_info
20965
0
            .borrow()
20966
0
            .hooks()
20967
0
            .cmd_build_micromaps_ext(command_buffer, unsafe {
20968
0
                slice_from_raw_parts(p_infos, info_count)
20969
0
            });
20970
0
        match layer_result {
20971
0
            LayerResult::Handled(res) => res,
20972
            LayerResult::Unhandled => unsafe {
20973
0
                (dispatch_table.cmd_build_micromaps_ext)(command_buffer, info_count, p_infos)
20974
            },
20975
        }
20976
0
    }
20977
0
    extern "system" fn build_micromaps_ext(
20978
0
        device: vk::Device,
20979
0
        deferred_operation: vk::DeferredOperationKHR,
20980
0
        info_count: u32,
20981
0
        p_infos: *const vk::MicromapBuildInfoEXT,
20982
0
    ) -> vk::Result {
20983
0
        let global = Self::instance();
20984
0
        // vkBuildMicromapsEXT
20985
0
        let device_info = global.get_device_info(device).unwrap();
20986
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
20987
0
        let layer_result = device_info
20988
0
            .customized_info
20989
0
            .borrow()
20990
0
            .hooks()
20991
0
            .build_micromaps_ext(deferred_operation, unsafe {
20992
0
                slice_from_raw_parts(p_infos, info_count)
20993
0
            });
20994
0
        match layer_result {
20995
0
            LayerResult::Handled(res) => match res {
20996
0
                Ok(()) => vk::Result::SUCCESS,
20997
0
                Err(e) => e,
20998
            },
20999
            LayerResult::Unhandled => unsafe {
21000
0
                (dispatch_table.build_micromaps_ext)(
21001
0
                    device,
21002
0
                    deferred_operation,
21003
0
                    info_count,
21004
0
                    p_infos,
21005
0
                )
21006
            },
21007
        }
21008
0
    }
21009
0
    extern "system" fn copy_micromap_ext(
21010
0
        device: vk::Device,
21011
0
        deferred_operation: vk::DeferredOperationKHR,
21012
0
        p_info: *const vk::CopyMicromapInfoEXT,
21013
0
    ) -> vk::Result {
21014
0
        let global = Self::instance();
21015
0
        // vkCopyMicromapEXT
21016
0
        let device_info = global.get_device_info(device).unwrap();
21017
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21018
0
        let layer_result = device_info
21019
0
            .customized_info
21020
0
            .borrow()
21021
0
            .hooks()
21022
0
            .copy_micromap_ext(deferred_operation, unsafe { p_info.as_ref() }.unwrap());
21023
0
        match layer_result {
21024
0
            LayerResult::Handled(res) => match res {
21025
0
                Ok(()) => vk::Result::SUCCESS,
21026
0
                Err(e) => e,
21027
            },
21028
            LayerResult::Unhandled => unsafe {
21029
0
                (dispatch_table.copy_micromap_ext)(device, deferred_operation, p_info)
21030
            },
21031
        }
21032
0
    }
21033
0
    extern "system" fn copy_micromap_to_memory_ext(
21034
0
        device: vk::Device,
21035
0
        deferred_operation: vk::DeferredOperationKHR,
21036
0
        p_info: *const vk::CopyMicromapToMemoryInfoEXT,
21037
0
    ) -> vk::Result {
21038
0
        let global = Self::instance();
21039
0
        // vkCopyMicromapToMemoryEXT
21040
0
        let device_info = global.get_device_info(device).unwrap();
21041
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21042
0
        let layer_result = device_info
21043
0
            .customized_info
21044
0
            .borrow()
21045
0
            .hooks()
21046
0
            .copy_micromap_to_memory_ext(deferred_operation, unsafe { p_info.as_ref() }.unwrap());
21047
0
        match layer_result {
21048
0
            LayerResult::Handled(res) => match res {
21049
0
                Ok(()) => vk::Result::SUCCESS,
21050
0
                Err(e) => e,
21051
            },
21052
            LayerResult::Unhandled => unsafe {
21053
0
                (dispatch_table.copy_micromap_to_memory_ext)(device, deferred_operation, p_info)
21054
            },
21055
        }
21056
0
    }
21057
0
    extern "system" fn copy_memory_to_micromap_ext(
21058
0
        device: vk::Device,
21059
0
        deferred_operation: vk::DeferredOperationKHR,
21060
0
        p_info: *const vk::CopyMemoryToMicromapInfoEXT,
21061
0
    ) -> vk::Result {
21062
0
        let global = Self::instance();
21063
0
        // vkCopyMemoryToMicromapEXT
21064
0
        let device_info = global.get_device_info(device).unwrap();
21065
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21066
0
        let layer_result = device_info
21067
0
            .customized_info
21068
0
            .borrow()
21069
0
            .hooks()
21070
0
            .copy_memory_to_micromap_ext(deferred_operation, unsafe { p_info.as_ref() }.unwrap());
21071
0
        match layer_result {
21072
0
            LayerResult::Handled(res) => match res {
21073
0
                Ok(()) => vk::Result::SUCCESS,
21074
0
                Err(e) => e,
21075
            },
21076
            LayerResult::Unhandled => unsafe {
21077
0
                (dispatch_table.copy_memory_to_micromap_ext)(device, deferred_operation, p_info)
21078
            },
21079
        }
21080
0
    }
21081
0
    extern "system" fn write_micromaps_properties_ext(
21082
0
        device: vk::Device,
21083
0
        micromap_count: u32,
21084
0
        p_micromaps: *const vk::MicromapEXT,
21085
0
        query_type: vk::QueryType,
21086
0
        data_size: usize,
21087
0
        p_data: *mut c_void,
21088
0
        stride: usize,
21089
0
    ) -> vk::Result {
21090
0
        let global = Self::instance();
21091
0
        // vkWriteMicromapsPropertiesEXT
21092
0
        let device_info = global.get_device_info(device).unwrap();
21093
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21094
0
        let layer_result = device_info
21095
0
            .customized_info
21096
0
            .borrow()
21097
0
            .hooks()
21098
0
            .write_micromaps_properties_ext(
21099
0
                unsafe { slice_from_raw_parts(p_micromaps, micromap_count) },
21100
0
                query_type,
21101
0
                unsafe { uninit_slice_from_raw_parts_mut(p_data as *mut u8, data_size) },
21102
0
                stride,
21103
0
            );
21104
0
        match layer_result {
21105
0
            LayerResult::Handled(res) => match res {
21106
0
                Ok(()) => vk::Result::SUCCESS,
21107
0
                Err(e) => e,
21108
            },
21109
            LayerResult::Unhandled => unsafe {
21110
0
                (dispatch_table.write_micromaps_properties_ext)(
21111
0
                    device,
21112
0
                    micromap_count,
21113
0
                    p_micromaps,
21114
0
                    query_type,
21115
0
                    data_size,
21116
0
                    p_data,
21117
0
                    stride,
21118
0
                )
21119
            },
21120
        }
21121
0
    }
21122
0
    extern "system" fn cmd_copy_micromap_ext(
21123
0
        command_buffer: vk::CommandBuffer,
21124
0
        p_info: *const vk::CopyMicromapInfoEXT,
21125
0
    ) {
21126
0
        let global = Self::instance();
21127
0
        // vkCmdCopyMicromapEXT
21128
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21129
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21130
0
        let layer_result = device_info
21131
0
            .customized_info
21132
0
            .borrow()
21133
0
            .hooks()
21134
0
            .cmd_copy_micromap_ext(command_buffer, unsafe { p_info.as_ref() }.unwrap());
21135
0
        match layer_result {
21136
0
            LayerResult::Handled(res) => res,
21137
            LayerResult::Unhandled => unsafe {
21138
0
                (dispatch_table.cmd_copy_micromap_ext)(command_buffer, p_info)
21139
            },
21140
        }
21141
0
    }
21142
0
    extern "system" fn cmd_copy_micromap_to_memory_ext(
21143
0
        command_buffer: vk::CommandBuffer,
21144
0
        p_info: *const vk::CopyMicromapToMemoryInfoEXT,
21145
0
    ) {
21146
0
        let global = Self::instance();
21147
0
        // vkCmdCopyMicromapToMemoryEXT
21148
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21149
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21150
0
        let layer_result = device_info
21151
0
            .customized_info
21152
0
            .borrow()
21153
0
            .hooks()
21154
0
            .cmd_copy_micromap_to_memory_ext(command_buffer, unsafe { p_info.as_ref() }.unwrap());
21155
0
        match layer_result {
21156
0
            LayerResult::Handled(res) => res,
21157
            LayerResult::Unhandled => unsafe {
21158
0
                (dispatch_table.cmd_copy_micromap_to_memory_ext)(command_buffer, p_info)
21159
            },
21160
        }
21161
0
    }
21162
0
    extern "system" fn cmd_copy_memory_to_micromap_ext(
21163
0
        command_buffer: vk::CommandBuffer,
21164
0
        p_info: *const vk::CopyMemoryToMicromapInfoEXT,
21165
0
    ) {
21166
0
        let global = Self::instance();
21167
0
        // vkCmdCopyMemoryToMicromapEXT
21168
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21169
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21170
0
        let layer_result = device_info
21171
0
            .customized_info
21172
0
            .borrow()
21173
0
            .hooks()
21174
0
            .cmd_copy_memory_to_micromap_ext(command_buffer, unsafe { p_info.as_ref() }.unwrap());
21175
0
        match layer_result {
21176
0
            LayerResult::Handled(res) => res,
21177
            LayerResult::Unhandled => unsafe {
21178
0
                (dispatch_table.cmd_copy_memory_to_micromap_ext)(command_buffer, p_info)
21179
            },
21180
        }
21181
0
    }
21182
0
    extern "system" fn cmd_write_micromaps_properties_ext(
21183
0
        command_buffer: vk::CommandBuffer,
21184
0
        micromap_count: u32,
21185
0
        p_micromaps: *const vk::MicromapEXT,
21186
0
        query_type: vk::QueryType,
21187
0
        query_pool: vk::QueryPool,
21188
0
        first_query: u32,
21189
0
    ) {
21190
0
        let global = Self::instance();
21191
0
        // vkCmdWriteMicromapsPropertiesEXT
21192
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21193
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21194
0
        let layer_result = device_info
21195
0
            .customized_info
21196
0
            .borrow()
21197
0
            .hooks()
21198
0
            .cmd_write_micromaps_properties_ext(
21199
0
                command_buffer,
21200
0
                unsafe { slice_from_raw_parts(p_micromaps, micromap_count) },
21201
0
                query_type,
21202
0
                query_pool,
21203
0
                first_query,
21204
0
            );
21205
0
        match layer_result {
21206
0
            LayerResult::Handled(res) => res,
21207
            LayerResult::Unhandled => unsafe {
21208
0
                (dispatch_table.cmd_write_micromaps_properties_ext)(
21209
0
                    command_buffer,
21210
0
                    micromap_count,
21211
0
                    p_micromaps,
21212
0
                    query_type,
21213
0
                    query_pool,
21214
0
                    first_query,
21215
0
                )
21216
            },
21217
        }
21218
0
    }
21219
0
    extern "system" fn get_device_micromap_compatibility_ext(
21220
0
        device: vk::Device,
21221
0
        p_version_info: *const vk::MicromapVersionInfoEXT,
21222
0
        p_compatibility: *mut vk::AccelerationStructureCompatibilityKHR,
21223
0
    ) {
21224
0
        let global = Self::instance();
21225
0
        // vkGetDeviceMicromapCompatibilityEXT
21226
0
        let device_info = global.get_device_info(device).unwrap();
21227
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21228
0
        let layer_result = device_info
21229
0
            .customized_info
21230
0
            .borrow()
21231
0
            .hooks()
21232
0
            .get_device_micromap_compatibility_ext(unsafe { p_version_info.as_ref() }.unwrap());
21233
0
        match layer_result {
21234
0
            LayerResult::Handled(res) => {
21235
0
                *unsafe { p_compatibility.as_mut() }.unwrap() = res;
21236
0
            }
21237
            LayerResult::Unhandled => unsafe {
21238
0
                (dispatch_table.get_device_micromap_compatibility_ext)(
21239
0
                    device,
21240
0
                    p_version_info,
21241
0
                    p_compatibility,
21242
0
                )
21243
            },
21244
        }
21245
0
    }
21246
0
    extern "system" fn get_micromap_build_sizes_ext(
21247
0
        device: vk::Device,
21248
0
        build_type: vk::AccelerationStructureBuildTypeKHR,
21249
0
        p_build_info: *const vk::MicromapBuildInfoEXT,
21250
0
        p_size_info: *mut vk::MicromapBuildSizesInfoEXT,
21251
0
    ) {
21252
0
        let global = Self::instance();
21253
0
        // vkGetMicromapBuildSizesEXT
21254
0
        let device_info = global.get_device_info(device).unwrap();
21255
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21256
0
        let layer_result = device_info
21257
0
            .customized_info
21258
0
            .borrow()
21259
0
            .hooks()
21260
0
            .get_micromap_build_sizes_ext(
21261
0
                build_type,
21262
0
                unsafe { p_build_info.as_ref() }.unwrap(),
21263
0
                unsafe { ptr_as_uninit_mut(p_size_info) }.unwrap(),
21264
0
            );
21265
0
        match layer_result {
21266
0
            LayerResult::Handled(res) => res,
21267
            LayerResult::Unhandled => unsafe {
21268
0
                (dispatch_table.get_micromap_build_sizes_ext)(
21269
0
                    device,
21270
0
                    build_type,
21271
0
                    p_build_info,
21272
0
                    p_size_info,
21273
0
                )
21274
            },
21275
        }
21276
0
    }
21277
0
    extern "system" fn set_device_memory_priority_ext(
21278
0
        device: vk::Device,
21279
0
        memory: vk::DeviceMemory,
21280
0
        priority: f32,
21281
0
    ) {
21282
0
        let global = Self::instance();
21283
0
        // vkSetDeviceMemoryPriorityEXT
21284
0
        let device_info = global.get_device_info(device).unwrap();
21285
0
        let dispatch_table = &device_info.dispatch_table.ext_pageable_device_local_memory;
21286
0
        let layer_result = device_info
21287
0
            .customized_info
21288
0
            .borrow()
21289
0
            .hooks()
21290
0
            .set_device_memory_priority_ext(memory, priority);
21291
0
        match layer_result {
21292
0
            LayerResult::Handled(res) => res,
21293
            LayerResult::Unhandled => unsafe {
21294
0
                (dispatch_table.set_device_memory_priority_ext)(device, memory, priority)
21295
            },
21296
        }
21297
0
    }
21298
0
    extern "system" fn get_descriptor_set_layout_host_mapping_info_valve(
21299
0
        device: vk::Device,
21300
0
        p_binding_reference: *const vk::DescriptorSetBindingReferenceVALVE,
21301
0
        p_host_mapping: *mut vk::DescriptorSetLayoutHostMappingInfoVALVE,
21302
0
    ) {
21303
0
        let global = Self::instance();
21304
0
        // vkGetDescriptorSetLayoutHostMappingInfoVALVE
21305
0
        let device_info = global.get_device_info(device).unwrap();
21306
0
        let dispatch_table = &device_info.dispatch_table.valve_descriptor_set_host_mapping;
21307
0
        let layer_result = device_info
21308
0
            .customized_info
21309
0
            .borrow()
21310
0
            .hooks()
21311
0
            .get_descriptor_set_layout_host_mapping_info_valve(
21312
0
                unsafe { p_binding_reference.as_ref() }.unwrap(),
21313
0
                unsafe { ptr_as_uninit_mut(p_host_mapping) }.unwrap(),
21314
0
            );
21315
0
        match layer_result {
21316
0
            LayerResult::Handled(res) => res,
21317
            LayerResult::Unhandled => unsafe {
21318
0
                (dispatch_table.get_descriptor_set_layout_host_mapping_info_valve)(
21319
0
                    device,
21320
0
                    p_binding_reference,
21321
0
                    p_host_mapping,
21322
0
                )
21323
            },
21324
        }
21325
0
    }
21326
0
    extern "system" fn get_descriptor_set_host_mapping_valve(
21327
0
        device: vk::Device,
21328
0
        descriptor_set: vk::DescriptorSet,
21329
0
        pp_data: *mut *mut c_void,
21330
0
    ) {
21331
0
        let global = Self::instance();
21332
0
        // vkGetDescriptorSetHostMappingVALVE
21333
0
        let device_info = global.get_device_info(device).unwrap();
21334
0
        let dispatch_table = &device_info.dispatch_table.valve_descriptor_set_host_mapping;
21335
0
        let layer_result = device_info
21336
0
            .customized_info
21337
0
            .borrow()
21338
0
            .hooks()
21339
0
            .get_descriptor_set_host_mapping_valve(descriptor_set);
21340
0
        match layer_result {
21341
0
            LayerResult::Handled(res) => {
21342
0
                *unsafe { pp_data.as_mut() }.unwrap() = res;
21343
0
            }
21344
            LayerResult::Unhandled => unsafe {
21345
0
                (dispatch_table.get_descriptor_set_host_mapping_valve)(
21346
0
                    device,
21347
0
                    descriptor_set,
21348
0
                    pp_data,
21349
0
                )
21350
            },
21351
        }
21352
0
    }
21353
0
    extern "system" fn cmd_copy_memory_indirect_nv(
21354
0
        command_buffer: vk::CommandBuffer,
21355
0
        copy_buffer_address: vk::DeviceAddress,
21356
0
        copy_count: u32,
21357
0
        stride: u32,
21358
0
    ) {
21359
0
        let global = Self::instance();
21360
0
        // vkCmdCopyMemoryIndirectNV
21361
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21362
0
        let dispatch_table = &device_info.dispatch_table.nv_copy_memory_indirect;
21363
0
        let layer_result = device_info
21364
0
            .customized_info
21365
0
            .borrow()
21366
0
            .hooks()
21367
0
            .cmd_copy_memory_indirect_nv(command_buffer, copy_buffer_address, copy_count, stride);
21368
0
        match layer_result {
21369
0
            LayerResult::Handled(res) => res,
21370
            LayerResult::Unhandled => unsafe {
21371
0
                (dispatch_table.cmd_copy_memory_indirect_nv)(
21372
0
                    command_buffer,
21373
0
                    copy_buffer_address,
21374
0
                    copy_count,
21375
0
                    stride,
21376
0
                )
21377
            },
21378
        }
21379
0
    }
21380
0
    extern "system" fn cmd_copy_memory_to_image_indirect_nv(
21381
0
        command_buffer: vk::CommandBuffer,
21382
0
        copy_buffer_address: vk::DeviceAddress,
21383
0
        copy_count: u32,
21384
0
        stride: u32,
21385
0
        dst_image: vk::Image,
21386
0
        dst_image_layout: vk::ImageLayout,
21387
0
        p_image_subresources: *const vk::ImageSubresourceLayers,
21388
0
    ) {
21389
0
        let global = Self::instance();
21390
0
        // vkCmdCopyMemoryToImageIndirectNV
21391
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21392
0
        let dispatch_table = &device_info.dispatch_table.nv_copy_memory_indirect;
21393
0
        let layer_result = device_info
21394
0
            .customized_info
21395
0
            .borrow()
21396
0
            .hooks()
21397
0
            .cmd_copy_memory_to_image_indirect_nv(
21398
0
                command_buffer,
21399
0
                copy_buffer_address,
21400
0
                stride,
21401
0
                dst_image,
21402
0
                dst_image_layout,
21403
0
                unsafe { slice_from_raw_parts(p_image_subresources, copy_count) },
21404
0
            );
21405
0
        match layer_result {
21406
0
            LayerResult::Handled(res) => res,
21407
            LayerResult::Unhandled => unsafe {
21408
0
                (dispatch_table.cmd_copy_memory_to_image_indirect_nv)(
21409
0
                    command_buffer,
21410
0
                    copy_buffer_address,
21411
0
                    copy_count,
21412
0
                    stride,
21413
0
                    dst_image,
21414
0
                    dst_image_layout,
21415
0
                    p_image_subresources,
21416
0
                )
21417
            },
21418
        }
21419
0
    }
21420
0
    extern "system" fn cmd_decompress_memory_nv(
21421
0
        command_buffer: vk::CommandBuffer,
21422
0
        decompress_region_count: u32,
21423
0
        p_decompress_memory_regions: *const vk::DecompressMemoryRegionNV,
21424
0
    ) {
21425
0
        let global = Self::instance();
21426
0
        // vkCmdDecompressMemoryNV
21427
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21428
0
        let dispatch_table = &device_info.dispatch_table.nv_memory_decompression;
21429
0
        let layer_result = device_info
21430
0
            .customized_info
21431
0
            .borrow()
21432
0
            .hooks()
21433
0
            .cmd_decompress_memory_nv(command_buffer, unsafe {
21434
0
                slice_from_raw_parts(p_decompress_memory_regions, decompress_region_count)
21435
0
            });
21436
0
        match layer_result {
21437
0
            LayerResult::Handled(res) => res,
21438
            LayerResult::Unhandled => unsafe {
21439
0
                (dispatch_table.cmd_decompress_memory_nv)(
21440
0
                    command_buffer,
21441
0
                    decompress_region_count,
21442
0
                    p_decompress_memory_regions,
21443
0
                )
21444
            },
21445
        }
21446
0
    }
21447
0
    extern "system" fn cmd_decompress_memory_indirect_count_nv(
21448
0
        command_buffer: vk::CommandBuffer,
21449
0
        indirect_commands_address: vk::DeviceAddress,
21450
0
        indirect_commands_count_address: vk::DeviceAddress,
21451
0
        stride: u32,
21452
0
    ) {
21453
0
        let global = Self::instance();
21454
0
        // vkCmdDecompressMemoryIndirectCountNV
21455
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21456
0
        let dispatch_table = &device_info.dispatch_table.nv_memory_decompression;
21457
0
        let layer_result = device_info
21458
0
            .customized_info
21459
0
            .borrow()
21460
0
            .hooks()
21461
0
            .cmd_decompress_memory_indirect_count_nv(
21462
0
                command_buffer,
21463
0
                indirect_commands_address,
21464
0
                indirect_commands_count_address,
21465
0
                stride,
21466
0
            );
21467
0
        match layer_result {
21468
0
            LayerResult::Handled(res) => res,
21469
            LayerResult::Unhandled => unsafe {
21470
0
                (dispatch_table.cmd_decompress_memory_indirect_count_nv)(
21471
0
                    command_buffer,
21472
0
                    indirect_commands_address,
21473
0
                    indirect_commands_count_address,
21474
0
                    stride,
21475
0
                )
21476
            },
21477
        }
21478
0
    }
21479
0
    extern "system" fn cmd_set_tessellation_domain_origin_ext(
21480
0
        command_buffer: vk::CommandBuffer,
21481
0
        domain_origin: vk::TessellationDomainOrigin,
21482
0
    ) {
21483
0
        let global = Self::instance();
21484
0
        // vkCmdSetTessellationDomainOriginEXT
21485
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21486
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21487
0
        let layer_result = device_info
21488
0
            .customized_info
21489
0
            .borrow()
21490
0
            .hooks()
21491
0
            .cmd_set_tessellation_domain_origin_ext(command_buffer, domain_origin);
21492
0
        match layer_result {
21493
0
            LayerResult::Handled(res) => res,
21494
            LayerResult::Unhandled => unsafe {
21495
0
                (dispatch_table.cmd_set_tessellation_domain_origin_ext)(
21496
0
                    command_buffer,
21497
0
                    domain_origin,
21498
0
                )
21499
            },
21500
        }
21501
0
    }
21502
0
    extern "system" fn cmd_set_depth_clamp_enable_ext(
21503
0
        command_buffer: vk::CommandBuffer,
21504
0
        depth_clamp_enable: vk::Bool32,
21505
0
    ) {
21506
0
        let global = Self::instance();
21507
0
        // vkCmdSetDepthClampEnableEXT
21508
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21509
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21510
0
        let layer_result = device_info
21511
0
            .customized_info
21512
0
            .borrow()
21513
0
            .hooks()
21514
0
            .cmd_set_depth_clamp_enable_ext(command_buffer, depth_clamp_enable == vk::TRUE);
21515
0
        match layer_result {
21516
0
            LayerResult::Handled(res) => res,
21517
            LayerResult::Unhandled => unsafe {
21518
0
                (dispatch_table.cmd_set_depth_clamp_enable_ext)(command_buffer, depth_clamp_enable)
21519
            },
21520
        }
21521
0
    }
21522
0
    extern "system" fn cmd_set_polygon_mode_ext(
21523
0
        command_buffer: vk::CommandBuffer,
21524
0
        polygon_mode: vk::PolygonMode,
21525
0
    ) {
21526
0
        let global = Self::instance();
21527
0
        // vkCmdSetPolygonModeEXT
21528
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21529
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21530
0
        let layer_result = device_info
21531
0
            .customized_info
21532
0
            .borrow()
21533
0
            .hooks()
21534
0
            .cmd_set_polygon_mode_ext(command_buffer, polygon_mode);
21535
0
        match layer_result {
21536
0
            LayerResult::Handled(res) => res,
21537
            LayerResult::Unhandled => unsafe {
21538
0
                (dispatch_table.cmd_set_polygon_mode_ext)(command_buffer, polygon_mode)
21539
            },
21540
        }
21541
0
    }
21542
0
    extern "system" fn cmd_set_rasterization_samples_ext(
21543
0
        command_buffer: vk::CommandBuffer,
21544
0
        rasterization_samples: vk::SampleCountFlags,
21545
0
    ) {
21546
0
        let global = Self::instance();
21547
0
        // vkCmdSetRasterizationSamplesEXT
21548
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21549
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21550
0
        let layer_result = device_info
21551
0
            .customized_info
21552
0
            .borrow()
21553
0
            .hooks()
21554
0
            .cmd_set_rasterization_samples_ext(command_buffer, rasterization_samples);
21555
0
        match layer_result {
21556
0
            LayerResult::Handled(res) => res,
21557
            LayerResult::Unhandled => unsafe {
21558
0
                (dispatch_table.cmd_set_rasterization_samples_ext)(
21559
0
                    command_buffer,
21560
0
                    rasterization_samples,
21561
0
                )
21562
            },
21563
        }
21564
0
    }
21565
0
    extern "system" fn cmd_set_sample_mask_ext(
21566
0
        command_buffer: vk::CommandBuffer,
21567
0
        samples: vk::SampleCountFlags,
21568
0
        p_sample_mask: *const vk::SampleMask,
21569
0
    ) {
21570
0
        let global = Self::instance();
21571
0
        // vkCmdSetSampleMaskEXT
21572
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21573
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21574
0
        let layer_result = device_info
21575
0
            .customized_info
21576
0
            .borrow()
21577
0
            .hooks()
21578
0
            .cmd_set_sample_mask_ext(command_buffer, samples, unsafe {
21579
0
                slice_from_raw_parts(p_sample_mask, samples.as_raw().div_ceil(32))
21580
0
            });
21581
0
        match layer_result {
21582
0
            LayerResult::Handled(res) => res,
21583
            LayerResult::Unhandled => unsafe {
21584
0
                (dispatch_table.cmd_set_sample_mask_ext)(command_buffer, samples, p_sample_mask)
21585
            },
21586
        }
21587
0
    }
21588
0
    extern "system" fn cmd_set_alpha_to_coverage_enable_ext(
21589
0
        command_buffer: vk::CommandBuffer,
21590
0
        alpha_to_coverage_enable: vk::Bool32,
21591
0
    ) {
21592
0
        let global = Self::instance();
21593
0
        // vkCmdSetAlphaToCoverageEnableEXT
21594
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21595
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21596
0
        let layer_result = device_info
21597
0
            .customized_info
21598
0
            .borrow()
21599
0
            .hooks()
21600
0
            .cmd_set_alpha_to_coverage_enable_ext(
21601
0
                command_buffer,
21602
0
                alpha_to_coverage_enable == vk::TRUE,
21603
0
            );
21604
0
        match layer_result {
21605
0
            LayerResult::Handled(res) => res,
21606
            LayerResult::Unhandled => unsafe {
21607
0
                (dispatch_table.cmd_set_alpha_to_coverage_enable_ext)(
21608
0
                    command_buffer,
21609
0
                    alpha_to_coverage_enable,
21610
0
                )
21611
            },
21612
        }
21613
0
    }
21614
0
    extern "system" fn cmd_set_alpha_to_one_enable_ext(
21615
0
        command_buffer: vk::CommandBuffer,
21616
0
        alpha_to_one_enable: vk::Bool32,
21617
0
    ) {
21618
0
        let global = Self::instance();
21619
0
        // vkCmdSetAlphaToOneEnableEXT
21620
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21621
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21622
0
        let layer_result = device_info
21623
0
            .customized_info
21624
0
            .borrow()
21625
0
            .hooks()
21626
0
            .cmd_set_alpha_to_one_enable_ext(command_buffer, alpha_to_one_enable == vk::TRUE);
21627
0
        match layer_result {
21628
0
            LayerResult::Handled(res) => res,
21629
            LayerResult::Unhandled => unsafe {
21630
0
                (dispatch_table.cmd_set_alpha_to_one_enable_ext)(
21631
0
                    command_buffer,
21632
0
                    alpha_to_one_enable,
21633
0
                )
21634
            },
21635
        }
21636
0
    }
21637
0
    extern "system" fn cmd_set_logic_op_enable_ext(
21638
0
        command_buffer: vk::CommandBuffer,
21639
0
        logic_op_enable: vk::Bool32,
21640
0
    ) {
21641
0
        let global = Self::instance();
21642
0
        // vkCmdSetLogicOpEnableEXT
21643
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21644
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21645
0
        let layer_result = device_info
21646
0
            .customized_info
21647
0
            .borrow()
21648
0
            .hooks()
21649
0
            .cmd_set_logic_op_enable_ext(command_buffer, logic_op_enable == vk::TRUE);
21650
0
        match layer_result {
21651
0
            LayerResult::Handled(res) => res,
21652
            LayerResult::Unhandled => unsafe {
21653
0
                (dispatch_table.cmd_set_logic_op_enable_ext)(command_buffer, logic_op_enable)
21654
            },
21655
        }
21656
0
    }
21657
0
    extern "system" fn cmd_set_color_blend_enable_ext(
21658
0
        command_buffer: vk::CommandBuffer,
21659
0
        first_attachment: u32,
21660
0
        attachment_count: u32,
21661
0
        p_color_blend_enables: *const vk::Bool32,
21662
0
    ) {
21663
0
        let global = Self::instance();
21664
0
        // vkCmdSetColorBlendEnableEXT
21665
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21666
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21667
0
        let layer_result = device_info
21668
0
            .customized_info
21669
0
            .borrow()
21670
0
            .hooks()
21671
0
            .cmd_set_color_blend_enable_ext(command_buffer, first_attachment, unsafe {
21672
0
                bool_iterator_from_raw_parts(p_color_blend_enables, attachment_count)
21673
0
            });
21674
0
        match layer_result {
21675
0
            LayerResult::Handled(res) => res,
21676
            LayerResult::Unhandled => unsafe {
21677
0
                (dispatch_table.cmd_set_color_blend_enable_ext)(
21678
0
                    command_buffer,
21679
0
                    first_attachment,
21680
0
                    attachment_count,
21681
0
                    p_color_blend_enables,
21682
0
                )
21683
            },
21684
        }
21685
0
    }
21686
0
    extern "system" fn cmd_set_color_blend_equation_ext(
21687
0
        command_buffer: vk::CommandBuffer,
21688
0
        first_attachment: u32,
21689
0
        attachment_count: u32,
21690
0
        p_color_blend_equations: *const vk::ColorBlendEquationEXT,
21691
0
    ) {
21692
0
        let global = Self::instance();
21693
0
        // vkCmdSetColorBlendEquationEXT
21694
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21695
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21696
0
        let layer_result = device_info
21697
0
            .customized_info
21698
0
            .borrow()
21699
0
            .hooks()
21700
0
            .cmd_set_color_blend_equation_ext(command_buffer, first_attachment, unsafe {
21701
0
                slice_from_raw_parts(p_color_blend_equations, attachment_count)
21702
0
            });
21703
0
        match layer_result {
21704
0
            LayerResult::Handled(res) => res,
21705
            LayerResult::Unhandled => unsafe {
21706
0
                (dispatch_table.cmd_set_color_blend_equation_ext)(
21707
0
                    command_buffer,
21708
0
                    first_attachment,
21709
0
                    attachment_count,
21710
0
                    p_color_blend_equations,
21711
0
                )
21712
            },
21713
        }
21714
0
    }
21715
0
    extern "system" fn cmd_set_color_write_mask_ext(
21716
0
        command_buffer: vk::CommandBuffer,
21717
0
        first_attachment: u32,
21718
0
        attachment_count: u32,
21719
0
        p_color_write_masks: *const vk::ColorComponentFlags,
21720
0
    ) {
21721
0
        let global = Self::instance();
21722
0
        // vkCmdSetColorWriteMaskEXT
21723
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21724
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21725
0
        let layer_result = device_info
21726
0
            .customized_info
21727
0
            .borrow()
21728
0
            .hooks()
21729
0
            .cmd_set_color_write_mask_ext(command_buffer, first_attachment, unsafe {
21730
0
                slice_from_raw_parts(p_color_write_masks, attachment_count)
21731
0
            });
21732
0
        match layer_result {
21733
0
            LayerResult::Handled(res) => res,
21734
            LayerResult::Unhandled => unsafe {
21735
0
                (dispatch_table.cmd_set_color_write_mask_ext)(
21736
0
                    command_buffer,
21737
0
                    first_attachment,
21738
0
                    attachment_count,
21739
0
                    p_color_write_masks,
21740
0
                )
21741
            },
21742
        }
21743
0
    }
21744
0
    extern "system" fn cmd_set_rasterization_stream_ext(
21745
0
        command_buffer: vk::CommandBuffer,
21746
0
        rasterization_stream: u32,
21747
0
    ) {
21748
0
        let global = Self::instance();
21749
0
        // vkCmdSetRasterizationStreamEXT
21750
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21751
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21752
0
        let layer_result = device_info
21753
0
            .customized_info
21754
0
            .borrow()
21755
0
            .hooks()
21756
0
            .cmd_set_rasterization_stream_ext(command_buffer, rasterization_stream);
21757
0
        match layer_result {
21758
0
            LayerResult::Handled(res) => res,
21759
            LayerResult::Unhandled => unsafe {
21760
0
                (dispatch_table.cmd_set_rasterization_stream_ext)(
21761
0
                    command_buffer,
21762
0
                    rasterization_stream,
21763
0
                )
21764
            },
21765
        }
21766
0
    }
21767
0
    extern "system" fn cmd_set_conservative_rasterization_mode_ext(
21768
0
        command_buffer: vk::CommandBuffer,
21769
0
        conservative_rasterization_mode: vk::ConservativeRasterizationModeEXT,
21770
0
    ) {
21771
0
        let global = Self::instance();
21772
0
        // vkCmdSetConservativeRasterizationModeEXT
21773
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21774
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21775
0
        let layer_result = device_info
21776
0
            .customized_info
21777
0
            .borrow()
21778
0
            .hooks()
21779
0
            .cmd_set_conservative_rasterization_mode_ext(
21780
0
                command_buffer,
21781
0
                conservative_rasterization_mode,
21782
0
            );
21783
0
        match layer_result {
21784
0
            LayerResult::Handled(res) => res,
21785
            LayerResult::Unhandled => unsafe {
21786
0
                (dispatch_table.cmd_set_conservative_rasterization_mode_ext)(
21787
0
                    command_buffer,
21788
0
                    conservative_rasterization_mode,
21789
0
                )
21790
            },
21791
        }
21792
0
    }
21793
0
    extern "system" fn cmd_set_extra_primitive_overestimation_size_ext(
21794
0
        command_buffer: vk::CommandBuffer,
21795
0
        extra_primitive_overestimation_size: f32,
21796
0
    ) {
21797
0
        let global = Self::instance();
21798
0
        // vkCmdSetExtraPrimitiveOverestimationSizeEXT
21799
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21800
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21801
0
        let layer_result = device_info
21802
0
            .customized_info
21803
0
            .borrow()
21804
0
            .hooks()
21805
0
            .cmd_set_extra_primitive_overestimation_size_ext(
21806
0
                command_buffer,
21807
0
                extra_primitive_overestimation_size,
21808
0
            );
21809
0
        match layer_result {
21810
0
            LayerResult::Handled(res) => res,
21811
            LayerResult::Unhandled => unsafe {
21812
0
                (dispatch_table.cmd_set_extra_primitive_overestimation_size_ext)(
21813
0
                    command_buffer,
21814
0
                    extra_primitive_overestimation_size,
21815
0
                )
21816
            },
21817
        }
21818
0
    }
21819
0
    extern "system" fn cmd_set_depth_clip_enable_ext(
21820
0
        command_buffer: vk::CommandBuffer,
21821
0
        depth_clip_enable: vk::Bool32,
21822
0
    ) {
21823
0
        let global = Self::instance();
21824
0
        // vkCmdSetDepthClipEnableEXT
21825
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21826
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21827
0
        let layer_result = device_info
21828
0
            .customized_info
21829
0
            .borrow()
21830
0
            .hooks()
21831
0
            .cmd_set_depth_clip_enable_ext(command_buffer, depth_clip_enable == vk::TRUE);
21832
0
        match layer_result {
21833
0
            LayerResult::Handled(res) => res,
21834
            LayerResult::Unhandled => unsafe {
21835
0
                (dispatch_table.cmd_set_depth_clip_enable_ext)(command_buffer, depth_clip_enable)
21836
            },
21837
        }
21838
0
    }
21839
0
    extern "system" fn cmd_set_sample_locations_enable_ext(
21840
0
        command_buffer: vk::CommandBuffer,
21841
0
        sample_locations_enable: vk::Bool32,
21842
0
    ) {
21843
0
        let global = Self::instance();
21844
0
        // vkCmdSetSampleLocationsEnableEXT
21845
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21846
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21847
0
        let layer_result = device_info
21848
0
            .customized_info
21849
0
            .borrow()
21850
0
            .hooks()
21851
0
            .cmd_set_sample_locations_enable_ext(
21852
0
                command_buffer,
21853
0
                sample_locations_enable == vk::TRUE,
21854
0
            );
21855
0
        match layer_result {
21856
0
            LayerResult::Handled(res) => res,
21857
            LayerResult::Unhandled => unsafe {
21858
0
                (dispatch_table.cmd_set_sample_locations_enable_ext)(
21859
0
                    command_buffer,
21860
0
                    sample_locations_enable,
21861
0
                )
21862
            },
21863
        }
21864
0
    }
21865
0
    extern "system" fn cmd_set_color_blend_advanced_ext(
21866
0
        command_buffer: vk::CommandBuffer,
21867
0
        first_attachment: u32,
21868
0
        attachment_count: u32,
21869
0
        p_color_blend_advanced: *const vk::ColorBlendAdvancedEXT,
21870
0
    ) {
21871
0
        let global = Self::instance();
21872
0
        // vkCmdSetColorBlendAdvancedEXT
21873
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21874
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21875
0
        let layer_result = device_info
21876
0
            .customized_info
21877
0
            .borrow()
21878
0
            .hooks()
21879
0
            .cmd_set_color_blend_advanced_ext(command_buffer, first_attachment, unsafe {
21880
0
                slice_from_raw_parts(p_color_blend_advanced, attachment_count)
21881
0
            });
21882
0
        match layer_result {
21883
0
            LayerResult::Handled(res) => res,
21884
            LayerResult::Unhandled => unsafe {
21885
0
                (dispatch_table.cmd_set_color_blend_advanced_ext)(
21886
0
                    command_buffer,
21887
0
                    first_attachment,
21888
0
                    attachment_count,
21889
0
                    p_color_blend_advanced,
21890
0
                )
21891
            },
21892
        }
21893
0
    }
21894
0
    extern "system" fn cmd_set_provoking_vertex_mode_ext(
21895
0
        command_buffer: vk::CommandBuffer,
21896
0
        provoking_vertex_mode: vk::ProvokingVertexModeEXT,
21897
0
    ) {
21898
0
        let global = Self::instance();
21899
0
        // vkCmdSetProvokingVertexModeEXT
21900
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21901
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21902
0
        let layer_result = device_info
21903
0
            .customized_info
21904
0
            .borrow()
21905
0
            .hooks()
21906
0
            .cmd_set_provoking_vertex_mode_ext(command_buffer, provoking_vertex_mode);
21907
0
        match layer_result {
21908
0
            LayerResult::Handled(res) => res,
21909
            LayerResult::Unhandled => unsafe {
21910
0
                (dispatch_table.cmd_set_provoking_vertex_mode_ext)(
21911
0
                    command_buffer,
21912
0
                    provoking_vertex_mode,
21913
0
                )
21914
            },
21915
        }
21916
0
    }
21917
0
    extern "system" fn cmd_set_line_rasterization_mode_ext(
21918
0
        command_buffer: vk::CommandBuffer,
21919
0
        line_rasterization_mode: vk::LineRasterizationModeEXT,
21920
0
    ) {
21921
0
        let global = Self::instance();
21922
0
        // vkCmdSetLineRasterizationModeEXT
21923
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21924
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21925
0
        let layer_result = device_info
21926
0
            .customized_info
21927
0
            .borrow()
21928
0
            .hooks()
21929
0
            .cmd_set_line_rasterization_mode_ext(command_buffer, line_rasterization_mode);
21930
0
        match layer_result {
21931
0
            LayerResult::Handled(res) => res,
21932
            LayerResult::Unhandled => unsafe {
21933
0
                (dispatch_table.cmd_set_line_rasterization_mode_ext)(
21934
0
                    command_buffer,
21935
0
                    line_rasterization_mode,
21936
0
                )
21937
            },
21938
        }
21939
0
    }
21940
0
    extern "system" fn cmd_set_line_stipple_enable_ext(
21941
0
        command_buffer: vk::CommandBuffer,
21942
0
        stippled_line_enable: vk::Bool32,
21943
0
    ) {
21944
0
        let global = Self::instance();
21945
0
        // vkCmdSetLineStippleEnableEXT
21946
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21947
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21948
0
        let layer_result = device_info
21949
0
            .customized_info
21950
0
            .borrow()
21951
0
            .hooks()
21952
0
            .cmd_set_line_stipple_enable_ext(command_buffer, stippled_line_enable == vk::TRUE);
21953
0
        match layer_result {
21954
0
            LayerResult::Handled(res) => res,
21955
            LayerResult::Unhandled => unsafe {
21956
0
                (dispatch_table.cmd_set_line_stipple_enable_ext)(
21957
0
                    command_buffer,
21958
0
                    stippled_line_enable,
21959
0
                )
21960
            },
21961
        }
21962
0
    }
21963
0
    extern "system" fn cmd_set_depth_clip_negative_one_to_one_ext(
21964
0
        command_buffer: vk::CommandBuffer,
21965
0
        negative_one_to_one: vk::Bool32,
21966
0
    ) {
21967
0
        let global = Self::instance();
21968
0
        // vkCmdSetDepthClipNegativeOneToOneEXT
21969
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21970
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21971
0
        let layer_result = device_info
21972
0
            .customized_info
21973
0
            .borrow()
21974
0
            .hooks()
21975
0
            .cmd_set_depth_clip_negative_one_to_one_ext(
21976
0
                command_buffer,
21977
0
                negative_one_to_one == vk::TRUE,
21978
0
            );
21979
0
        match layer_result {
21980
0
            LayerResult::Handled(res) => res,
21981
            LayerResult::Unhandled => unsafe {
21982
0
                (dispatch_table.cmd_set_depth_clip_negative_one_to_one_ext)(
21983
0
                    command_buffer,
21984
0
                    negative_one_to_one,
21985
0
                )
21986
            },
21987
        }
21988
0
    }
21989
0
    extern "system" fn cmd_set_viewport_w_scaling_enable_nv(
21990
0
        command_buffer: vk::CommandBuffer,
21991
0
        viewport_w_scaling_enable: vk::Bool32,
21992
0
    ) {
21993
0
        let global = Self::instance();
21994
0
        // vkCmdSetViewportWScalingEnableNV
21995
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21996
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21997
0
        let layer_result = device_info
21998
0
            .customized_info
21999
0
            .borrow()
22000
0
            .hooks()
22001
0
            .cmd_set_viewport_w_scaling_enable_nv(
22002
0
                command_buffer,
22003
0
                viewport_w_scaling_enable == vk::TRUE,
22004
0
            );
22005
0
        match layer_result {
22006
0
            LayerResult::Handled(res) => res,
22007
            LayerResult::Unhandled => unsafe {
22008
0
                (dispatch_table.cmd_set_viewport_w_scaling_enable_nv)(
22009
0
                    command_buffer,
22010
0
                    viewport_w_scaling_enable,
22011
0
                )
22012
            },
22013
        }
22014
0
    }
22015
0
    extern "system" fn cmd_set_viewport_swizzle_nv(
22016
0
        command_buffer: vk::CommandBuffer,
22017
0
        first_viewport: u32,
22018
0
        viewport_count: u32,
22019
0
        p_viewport_swizzles: *const vk::ViewportSwizzleNV,
22020
0
    ) {
22021
0
        let global = Self::instance();
22022
0
        // vkCmdSetViewportSwizzleNV
22023
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22024
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22025
0
        let layer_result = device_info
22026
0
            .customized_info
22027
0
            .borrow()
22028
0
            .hooks()
22029
0
            .cmd_set_viewport_swizzle_nv(command_buffer, first_viewport, unsafe {
22030
0
                slice_from_raw_parts(p_viewport_swizzles, viewport_count)
22031
0
            });
22032
0
        match layer_result {
22033
0
            LayerResult::Handled(res) => res,
22034
            LayerResult::Unhandled => unsafe {
22035
0
                (dispatch_table.cmd_set_viewport_swizzle_nv)(
22036
0
                    command_buffer,
22037
0
                    first_viewport,
22038
0
                    viewport_count,
22039
0
                    p_viewport_swizzles,
22040
0
                )
22041
            },
22042
        }
22043
0
    }
22044
0
    extern "system" fn cmd_set_coverage_to_color_enable_nv(
22045
0
        command_buffer: vk::CommandBuffer,
22046
0
        coverage_to_color_enable: vk::Bool32,
22047
0
    ) {
22048
0
        let global = Self::instance();
22049
0
        // vkCmdSetCoverageToColorEnableNV
22050
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22051
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22052
0
        let layer_result = device_info
22053
0
            .customized_info
22054
0
            .borrow()
22055
0
            .hooks()
22056
0
            .cmd_set_coverage_to_color_enable_nv(
22057
0
                command_buffer,
22058
0
                coverage_to_color_enable == vk::TRUE,
22059
0
            );
22060
0
        match layer_result {
22061
0
            LayerResult::Handled(res) => res,
22062
            LayerResult::Unhandled => unsafe {
22063
0
                (dispatch_table.cmd_set_coverage_to_color_enable_nv)(
22064
0
                    command_buffer,
22065
0
                    coverage_to_color_enable,
22066
0
                )
22067
            },
22068
        }
22069
0
    }
22070
0
    extern "system" fn cmd_set_coverage_to_color_location_nv(
22071
0
        command_buffer: vk::CommandBuffer,
22072
0
        coverage_to_color_location: u32,
22073
0
    ) {
22074
0
        let global = Self::instance();
22075
0
        // vkCmdSetCoverageToColorLocationNV
22076
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22077
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22078
0
        let layer_result = device_info
22079
0
            .customized_info
22080
0
            .borrow()
22081
0
            .hooks()
22082
0
            .cmd_set_coverage_to_color_location_nv(command_buffer, coverage_to_color_location);
22083
0
        match layer_result {
22084
0
            LayerResult::Handled(res) => res,
22085
            LayerResult::Unhandled => unsafe {
22086
0
                (dispatch_table.cmd_set_coverage_to_color_location_nv)(
22087
0
                    command_buffer,
22088
0
                    coverage_to_color_location,
22089
0
                )
22090
            },
22091
        }
22092
0
    }
22093
0
    extern "system" fn cmd_set_coverage_modulation_mode_nv(
22094
0
        command_buffer: vk::CommandBuffer,
22095
0
        coverage_modulation_mode: vk::CoverageModulationModeNV,
22096
0
    ) {
22097
0
        let global = Self::instance();
22098
0
        // vkCmdSetCoverageModulationModeNV
22099
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22100
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22101
0
        let layer_result = device_info
22102
0
            .customized_info
22103
0
            .borrow()
22104
0
            .hooks()
22105
0
            .cmd_set_coverage_modulation_mode_nv(command_buffer, coverage_modulation_mode);
22106
0
        match layer_result {
22107
0
            LayerResult::Handled(res) => res,
22108
            LayerResult::Unhandled => unsafe {
22109
0
                (dispatch_table.cmd_set_coverage_modulation_mode_nv)(
22110
0
                    command_buffer,
22111
0
                    coverage_modulation_mode,
22112
0
                )
22113
            },
22114
        }
22115
0
    }
22116
0
    extern "system" fn cmd_set_coverage_modulation_table_enable_nv(
22117
0
        command_buffer: vk::CommandBuffer,
22118
0
        coverage_modulation_table_enable: vk::Bool32,
22119
0
    ) {
22120
0
        let global = Self::instance();
22121
0
        // vkCmdSetCoverageModulationTableEnableNV
22122
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22123
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22124
0
        let layer_result = device_info
22125
0
            .customized_info
22126
0
            .borrow()
22127
0
            .hooks()
22128
0
            .cmd_set_coverage_modulation_table_enable_nv(
22129
0
                command_buffer,
22130
0
                coverage_modulation_table_enable == vk::TRUE,
22131
0
            );
22132
0
        match layer_result {
22133
0
            LayerResult::Handled(res) => res,
22134
            LayerResult::Unhandled => unsafe {
22135
0
                (dispatch_table.cmd_set_coverage_modulation_table_enable_nv)(
22136
0
                    command_buffer,
22137
0
                    coverage_modulation_table_enable,
22138
0
                )
22139
            },
22140
        }
22141
0
    }
22142
0
    extern "system" fn cmd_set_coverage_modulation_table_nv(
22143
0
        command_buffer: vk::CommandBuffer,
22144
0
        coverage_modulation_table_count: u32,
22145
0
        p_coverage_modulation_table: *const f32,
22146
0
    ) {
22147
0
        let global = Self::instance();
22148
0
        // vkCmdSetCoverageModulationTableNV
22149
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22150
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22151
0
        let layer_result = device_info
22152
0
            .customized_info
22153
0
            .borrow()
22154
0
            .hooks()
22155
0
            .cmd_set_coverage_modulation_table_nv(command_buffer, unsafe {
22156
0
                slice_from_raw_parts(p_coverage_modulation_table, coverage_modulation_table_count)
22157
0
            });
22158
0
        match layer_result {
22159
0
            LayerResult::Handled(res) => res,
22160
            LayerResult::Unhandled => unsafe {
22161
0
                (dispatch_table.cmd_set_coverage_modulation_table_nv)(
22162
0
                    command_buffer,
22163
0
                    coverage_modulation_table_count,
22164
0
                    p_coverage_modulation_table,
22165
0
                )
22166
            },
22167
        }
22168
0
    }
22169
0
    extern "system" fn cmd_set_shading_rate_image_enable_nv(
22170
0
        command_buffer: vk::CommandBuffer,
22171
0
        shading_rate_image_enable: vk::Bool32,
22172
0
    ) {
22173
0
        let global = Self::instance();
22174
0
        // vkCmdSetShadingRateImageEnableNV
22175
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22176
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22177
0
        let layer_result = device_info
22178
0
            .customized_info
22179
0
            .borrow()
22180
0
            .hooks()
22181
0
            .cmd_set_shading_rate_image_enable_nv(
22182
0
                command_buffer,
22183
0
                shading_rate_image_enable == vk::TRUE,
22184
0
            );
22185
0
        match layer_result {
22186
0
            LayerResult::Handled(res) => res,
22187
            LayerResult::Unhandled => unsafe {
22188
0
                (dispatch_table.cmd_set_shading_rate_image_enable_nv)(
22189
0
                    command_buffer,
22190
0
                    shading_rate_image_enable,
22191
0
                )
22192
            },
22193
        }
22194
0
    }
22195
0
    extern "system" fn cmd_set_representative_fragment_test_enable_nv(
22196
0
        command_buffer: vk::CommandBuffer,
22197
0
        representative_fragment_test_enable: vk::Bool32,
22198
0
    ) {
22199
0
        let global = Self::instance();
22200
0
        // vkCmdSetRepresentativeFragmentTestEnableNV
22201
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22202
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22203
0
        let layer_result = device_info
22204
0
            .customized_info
22205
0
            .borrow()
22206
0
            .hooks()
22207
0
            .cmd_set_representative_fragment_test_enable_nv(
22208
0
                command_buffer,
22209
0
                representative_fragment_test_enable == vk::TRUE,
22210
0
            );
22211
0
        match layer_result {
22212
0
            LayerResult::Handled(res) => res,
22213
            LayerResult::Unhandled => unsafe {
22214
0
                (dispatch_table.cmd_set_representative_fragment_test_enable_nv)(
22215
0
                    command_buffer,
22216
0
                    representative_fragment_test_enable,
22217
0
                )
22218
            },
22219
        }
22220
0
    }
22221
0
    extern "system" fn cmd_set_coverage_reduction_mode_nv(
22222
0
        command_buffer: vk::CommandBuffer,
22223
0
        coverage_reduction_mode: vk::CoverageReductionModeNV,
22224
0
    ) {
22225
0
        let global = Self::instance();
22226
0
        // vkCmdSetCoverageReductionModeNV
22227
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22228
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22229
0
        let layer_result = device_info
22230
0
            .customized_info
22231
0
            .borrow()
22232
0
            .hooks()
22233
0
            .cmd_set_coverage_reduction_mode_nv(command_buffer, coverage_reduction_mode);
22234
0
        match layer_result {
22235
0
            LayerResult::Handled(res) => res,
22236
            LayerResult::Unhandled => unsafe {
22237
0
                (dispatch_table.cmd_set_coverage_reduction_mode_nv)(
22238
0
                    command_buffer,
22239
0
                    coverage_reduction_mode,
22240
0
                )
22241
            },
22242
        }
22243
0
    }
22244
0
    extern "system" fn get_shader_module_identifier_ext(
22245
0
        device: vk::Device,
22246
0
        shader_module: vk::ShaderModule,
22247
0
        p_identifier: *mut vk::ShaderModuleIdentifierEXT,
22248
0
    ) {
22249
0
        let global = Self::instance();
22250
0
        // vkGetShaderModuleIdentifierEXT
22251
0
        let device_info = global.get_device_info(device).unwrap();
22252
0
        let dispatch_table = &device_info.dispatch_table.ext_shader_module_identifier;
22253
0
        let layer_result = device_info
22254
0
            .customized_info
22255
0
            .borrow()
22256
0
            .hooks()
22257
0
            .get_shader_module_identifier_ext(
22258
0
                shader_module,
22259
0
                unsafe { ptr_as_uninit_mut(p_identifier) }.unwrap(),
22260
0
            );
22261
0
        match layer_result {
22262
0
            LayerResult::Handled(res) => res,
22263
            LayerResult::Unhandled => unsafe {
22264
0
                (dispatch_table.get_shader_module_identifier_ext)(
22265
0
                    device,
22266
0
                    shader_module,
22267
0
                    p_identifier,
22268
0
                )
22269
            },
22270
        }
22271
0
    }
22272
0
    extern "system" fn get_shader_module_create_info_identifier_ext(
22273
0
        device: vk::Device,
22274
0
        p_create_info: *const vk::ShaderModuleCreateInfo,
22275
0
        p_identifier: *mut vk::ShaderModuleIdentifierEXT,
22276
0
    ) {
22277
0
        let global = Self::instance();
22278
0
        // vkGetShaderModuleCreateInfoIdentifierEXT
22279
0
        let device_info = global.get_device_info(device).unwrap();
22280
0
        let dispatch_table = &device_info.dispatch_table.ext_shader_module_identifier;
22281
0
        let layer_result = device_info
22282
0
            .customized_info
22283
0
            .borrow()
22284
0
            .hooks()
22285
0
            .get_shader_module_create_info_identifier_ext(
22286
0
                unsafe { p_create_info.as_ref() }.unwrap(),
22287
0
                unsafe { ptr_as_uninit_mut(p_identifier) }.unwrap(),
22288
0
            );
22289
0
        match layer_result {
22290
0
            LayerResult::Handled(res) => res,
22291
            LayerResult::Unhandled => unsafe {
22292
0
                (dispatch_table.get_shader_module_create_info_identifier_ext)(
22293
0
                    device,
22294
0
                    p_create_info,
22295
0
                    p_identifier,
22296
0
                )
22297
            },
22298
        }
22299
0
    }
22300
0
    extern "system" fn create_optical_flow_session_nv(
22301
0
        device: vk::Device,
22302
0
        p_create_info: *const vk::OpticalFlowSessionCreateInfoNV,
22303
0
        p_allocator: *const vk::AllocationCallbacks,
22304
0
        p_session: *mut vk::OpticalFlowSessionNV,
22305
0
    ) -> vk::Result {
22306
0
        let global = Self::instance();
22307
0
        // vkCreateOpticalFlowSessionNV
22308
0
        let device_info = global.get_device_info(device).unwrap();
22309
0
        let dispatch_table = &device_info.dispatch_table.nv_optical_flow;
22310
0
        let layer_result = device_info
22311
0
            .customized_info
22312
0
            .borrow()
22313
0
            .hooks()
22314
0
            .create_optical_flow_session_nv(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
22315
0
                p_allocator.as_ref()
22316
0
            });
22317
0
        match layer_result {
22318
0
            LayerResult::Handled(res) => match res {
22319
0
                Ok(res) => {
22320
0
                    *unsafe { p_session.as_mut() }.unwrap() = res;
22321
0
                    vk::Result::SUCCESS
22322
                }
22323
0
                Err(e) => e,
22324
            },
22325
            LayerResult::Unhandled => unsafe {
22326
0
                (dispatch_table.create_optical_flow_session_nv)(
22327
0
                    device,
22328
0
                    p_create_info,
22329
0
                    p_allocator,
22330
0
                    p_session,
22331
0
                )
22332
            },
22333
        }
22334
0
    }
22335
0
    extern "system" fn destroy_optical_flow_session_nv(
22336
0
        device: vk::Device,
22337
0
        session: vk::OpticalFlowSessionNV,
22338
0
        p_allocator: *const vk::AllocationCallbacks,
22339
0
    ) {
22340
0
        let global = Self::instance();
22341
0
        // vkDestroyOpticalFlowSessionNV
22342
0
        let device_info = global.get_device_info(device).unwrap();
22343
0
        let dispatch_table = &device_info.dispatch_table.nv_optical_flow;
22344
0
        let layer_result = device_info
22345
0
            .customized_info
22346
0
            .borrow()
22347
0
            .hooks()
22348
0
            .destroy_optical_flow_session_nv(session, unsafe { p_allocator.as_ref() });
22349
0
        match layer_result {
22350
0
            LayerResult::Handled(res) => res,
22351
            LayerResult::Unhandled => unsafe {
22352
0
                (dispatch_table.destroy_optical_flow_session_nv)(device, session, p_allocator)
22353
            },
22354
        }
22355
0
    }
22356
0
    extern "system" fn bind_optical_flow_session_image_nv(
22357
0
        device: vk::Device,
22358
0
        session: vk::OpticalFlowSessionNV,
22359
0
        binding_point: vk::OpticalFlowSessionBindingPointNV,
22360
0
        view: vk::ImageView,
22361
0
        layout: vk::ImageLayout,
22362
0
    ) -> vk::Result {
22363
0
        let global = Self::instance();
22364
0
        // vkBindOpticalFlowSessionImageNV
22365
0
        let device_info = global.get_device_info(device).unwrap();
22366
0
        let dispatch_table = &device_info.dispatch_table.nv_optical_flow;
22367
0
        let layer_result = device_info
22368
0
            .customized_info
22369
0
            .borrow()
22370
0
            .hooks()
22371
0
            .bind_optical_flow_session_image_nv(session, binding_point, view, layout);
22372
0
        match layer_result {
22373
0
            LayerResult::Handled(res) => match res {
22374
0
                Ok(()) => vk::Result::SUCCESS,
22375
0
                Err(e) => e,
22376
            },
22377
            LayerResult::Unhandled => unsafe {
22378
0
                (dispatch_table.bind_optical_flow_session_image_nv)(
22379
0
                    device,
22380
0
                    session,
22381
0
                    binding_point,
22382
0
                    view,
22383
0
                    layout,
22384
0
                )
22385
            },
22386
        }
22387
0
    }
22388
0
    extern "system" fn cmd_optical_flow_execute_nv(
22389
0
        command_buffer: vk::CommandBuffer,
22390
0
        session: vk::OpticalFlowSessionNV,
22391
0
        p_execute_info: *const vk::OpticalFlowExecuteInfoNV,
22392
0
    ) {
22393
0
        let global = Self::instance();
22394
0
        // vkCmdOpticalFlowExecuteNV
22395
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22396
0
        let dispatch_table = &device_info.dispatch_table.nv_optical_flow;
22397
0
        let layer_result = device_info
22398
0
            .customized_info
22399
0
            .borrow()
22400
0
            .hooks()
22401
0
            .cmd_optical_flow_execute_nv(
22402
0
                command_buffer,
22403
0
                session,
22404
0
                unsafe { p_execute_info.as_ref() }.unwrap(),
22405
0
            );
22406
0
        match layer_result {
22407
0
            LayerResult::Handled(res) => res,
22408
            LayerResult::Unhandled => unsafe {
22409
0
                (dispatch_table.cmd_optical_flow_execute_nv)(
22410
0
                    command_buffer,
22411
0
                    session,
22412
0
                    p_execute_info,
22413
0
                )
22414
            },
22415
        }
22416
0
    }
22417
0
    extern "system" fn get_framebuffer_tile_properties_qcom(
22418
0
        device: vk::Device,
22419
0
        framebuffer: vk::Framebuffer,
22420
0
        p_properties_count: *mut u32,
22421
0
        p_properties: *mut vk::TilePropertiesQCOM,
22422
0
    ) -> vk::Result {
22423
0
        let global = Self::instance();
22424
0
        // vkGetFramebufferTilePropertiesQCOM
22425
0
        let device_info = global.get_device_info(device).unwrap();
22426
0
        let dispatch_table = &device_info.dispatch_table.qcom_tile_properties;
22427
0
        let layer_result = device_info
22428
0
            .customized_info
22429
0
            .borrow()
22430
0
            .hooks()
22431
0
            .get_framebuffer_tile_properties_qcom(
22432
0
                framebuffer,
22433
0
                unsafe { ptr_as_uninit_mut(p_properties_count) }.unwrap(),
22434
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_properties, p_properties_count) },
22435
0
            );
22436
0
        match layer_result {
22437
0
            LayerResult::Handled(res) => match res {
22438
0
                Ok(()) => vk::Result::SUCCESS,
22439
0
                Err(e) => e,
22440
            },
22441
            LayerResult::Unhandled => unsafe {
22442
0
                (dispatch_table.get_framebuffer_tile_properties_qcom)(
22443
0
                    device,
22444
0
                    framebuffer,
22445
0
                    p_properties_count,
22446
0
                    p_properties,
22447
0
                )
22448
            },
22449
        }
22450
0
    }
22451
0
    extern "system" fn get_dynamic_rendering_tile_properties_qcom(
22452
0
        device: vk::Device,
22453
0
        p_rendering_info: *const vk::RenderingInfo,
22454
0
        p_properties: *mut vk::TilePropertiesQCOM,
22455
0
    ) -> vk::Result {
22456
0
        let global = Self::instance();
22457
0
        // vkGetDynamicRenderingTilePropertiesQCOM
22458
0
        let device_info = global.get_device_info(device).unwrap();
22459
0
        let dispatch_table = &device_info.dispatch_table.qcom_tile_properties;
22460
0
        let layer_result = device_info
22461
0
            .customized_info
22462
0
            .borrow()
22463
0
            .hooks()
22464
0
            .get_dynamic_rendering_tile_properties_qcom(
22465
0
                unsafe { p_rendering_info.as_ref() }.unwrap(),
22466
0
                unsafe { ptr_as_uninit_mut(p_properties) }.unwrap(),
22467
0
            );
22468
0
        match layer_result {
22469
0
            LayerResult::Handled(res) => match res {
22470
0
                Ok(()) => vk::Result::SUCCESS,
22471
0
                Err(e) => e,
22472
            },
22473
            LayerResult::Unhandled => unsafe {
22474
0
                (dispatch_table.get_dynamic_rendering_tile_properties_qcom)(
22475
0
                    device,
22476
0
                    p_rendering_info,
22477
0
                    p_properties,
22478
0
                )
22479
            },
22480
        }
22481
0
    }
22482
0
    extern "system" fn create_acceleration_structure_khr(
22483
0
        device: vk::Device,
22484
0
        p_create_info: *const vk::AccelerationStructureCreateInfoKHR,
22485
0
        p_allocator: *const vk::AllocationCallbacks,
22486
0
        p_acceleration_structure: *mut vk::AccelerationStructureKHR,
22487
0
    ) -> vk::Result {
22488
0
        let global = Self::instance();
22489
0
        // vkCreateAccelerationStructureKHR
22490
0
        let device_info = global.get_device_info(device).unwrap();
22491
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22492
0
        let layer_result = device_info
22493
0
            .customized_info
22494
0
            .borrow()
22495
0
            .hooks()
22496
0
            .create_acceleration_structure_khr(
22497
0
                unsafe { p_create_info.as_ref() }.unwrap(),
22498
0
                unsafe { p_allocator.as_ref() },
22499
0
            );
22500
0
        match layer_result {
22501
0
            LayerResult::Handled(res) => match res {
22502
0
                Ok(res) => {
22503
0
                    *unsafe { p_acceleration_structure.as_mut() }.unwrap() = res;
22504
0
                    vk::Result::SUCCESS
22505
                }
22506
0
                Err(e) => e,
22507
            },
22508
            LayerResult::Unhandled => unsafe {
22509
0
                (dispatch_table.create_acceleration_structure_khr)(
22510
0
                    device,
22511
0
                    p_create_info,
22512
0
                    p_allocator,
22513
0
                    p_acceleration_structure,
22514
0
                )
22515
            },
22516
        }
22517
0
    }
22518
0
    extern "system" fn destroy_acceleration_structure_khr(
22519
0
        device: vk::Device,
22520
0
        acceleration_structure: vk::AccelerationStructureKHR,
22521
0
        p_allocator: *const vk::AllocationCallbacks,
22522
0
    ) {
22523
0
        let global = Self::instance();
22524
0
        // vkDestroyAccelerationStructureKHR
22525
0
        let device_info = global.get_device_info(device).unwrap();
22526
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22527
0
        let layer_result = device_info
22528
0
            .customized_info
22529
0
            .borrow()
22530
0
            .hooks()
22531
0
            .destroy_acceleration_structure_khr(acceleration_structure, unsafe {
22532
0
                p_allocator.as_ref()
22533
0
            });
22534
0
        match layer_result {
22535
0
            LayerResult::Handled(res) => res,
22536
            LayerResult::Unhandled => unsafe {
22537
0
                (dispatch_table.destroy_acceleration_structure_khr)(
22538
0
                    device,
22539
0
                    acceleration_structure,
22540
0
                    p_allocator,
22541
0
                )
22542
            },
22543
        }
22544
0
    }
22545
0
    extern "system" fn copy_acceleration_structure_khr(
22546
0
        device: vk::Device,
22547
0
        deferred_operation: vk::DeferredOperationKHR,
22548
0
        p_info: *const vk::CopyAccelerationStructureInfoKHR,
22549
0
    ) -> vk::Result {
22550
0
        let global = Self::instance();
22551
0
        // vkCopyAccelerationStructureKHR
22552
0
        let device_info = global.get_device_info(device).unwrap();
22553
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22554
0
        let layer_result = device_info
22555
0
            .customized_info
22556
0
            .borrow()
22557
0
            .hooks()
22558
0
            .copy_acceleration_structure_khr(
22559
0
                deferred_operation,
22560
0
                unsafe { p_info.as_ref() }.unwrap(),
22561
0
            );
22562
0
        match layer_result {
22563
0
            LayerResult::Handled(res) => match res {
22564
0
                Ok(()) => vk::Result::SUCCESS,
22565
0
                Err(e) => e,
22566
            },
22567
            LayerResult::Unhandled => unsafe {
22568
0
                (dispatch_table.copy_acceleration_structure_khr)(device, deferred_operation, p_info)
22569
            },
22570
        }
22571
0
    }
22572
0
    extern "system" fn copy_acceleration_structure_to_memory_khr(
22573
0
        device: vk::Device,
22574
0
        deferred_operation: vk::DeferredOperationKHR,
22575
0
        p_info: *const vk::CopyAccelerationStructureToMemoryInfoKHR,
22576
0
    ) -> vk::Result {
22577
0
        let global = Self::instance();
22578
0
        // vkCopyAccelerationStructureToMemoryKHR
22579
0
        let device_info = global.get_device_info(device).unwrap();
22580
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22581
0
        let layer_result = device_info
22582
0
            .customized_info
22583
0
            .borrow()
22584
0
            .hooks()
22585
0
            .copy_acceleration_structure_to_memory_khr(
22586
0
                deferred_operation,
22587
0
                unsafe { p_info.as_ref() }.unwrap(),
22588
0
            );
22589
0
        match layer_result {
22590
0
            LayerResult::Handled(res) => match res {
22591
0
                Ok(()) => vk::Result::SUCCESS,
22592
0
                Err(e) => e,
22593
            },
22594
            LayerResult::Unhandled => unsafe {
22595
0
                (dispatch_table.copy_acceleration_structure_to_memory_khr)(
22596
0
                    device,
22597
0
                    deferred_operation,
22598
0
                    p_info,
22599
0
                )
22600
            },
22601
        }
22602
0
    }
22603
0
    extern "system" fn copy_memory_to_acceleration_structure_khr(
22604
0
        device: vk::Device,
22605
0
        deferred_operation: vk::DeferredOperationKHR,
22606
0
        p_info: *const vk::CopyMemoryToAccelerationStructureInfoKHR,
22607
0
    ) -> vk::Result {
22608
0
        let global = Self::instance();
22609
0
        // vkCopyMemoryToAccelerationStructureKHR
22610
0
        let device_info = global.get_device_info(device).unwrap();
22611
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22612
0
        let layer_result = device_info
22613
0
            .customized_info
22614
0
            .borrow()
22615
0
            .hooks()
22616
0
            .copy_memory_to_acceleration_structure_khr(
22617
0
                deferred_operation,
22618
0
                unsafe { p_info.as_ref() }.unwrap(),
22619
0
            );
22620
0
        match layer_result {
22621
0
            LayerResult::Handled(res) => match res {
22622
0
                Ok(()) => vk::Result::SUCCESS,
22623
0
                Err(e) => e,
22624
            },
22625
            LayerResult::Unhandled => unsafe {
22626
0
                (dispatch_table.copy_memory_to_acceleration_structure_khr)(
22627
0
                    device,
22628
0
                    deferred_operation,
22629
0
                    p_info,
22630
0
                )
22631
            },
22632
        }
22633
0
    }
22634
0
    extern "system" fn write_acceleration_structures_properties_khr(
22635
0
        device: vk::Device,
22636
0
        acceleration_structure_count: u32,
22637
0
        p_acceleration_structures: *const vk::AccelerationStructureKHR,
22638
0
        query_type: vk::QueryType,
22639
0
        data_size: usize,
22640
0
        p_data: *mut c_void,
22641
0
        stride: usize,
22642
0
    ) -> vk::Result {
22643
0
        let global = Self::instance();
22644
0
        // vkWriteAccelerationStructuresPropertiesKHR
22645
0
        let device_info = global.get_device_info(device).unwrap();
22646
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22647
0
        let layer_result = device_info
22648
0
            .customized_info
22649
0
            .borrow()
22650
0
            .hooks()
22651
0
            .write_acceleration_structures_properties_khr(
22652
0
                unsafe {
22653
0
                    slice_from_raw_parts(p_acceleration_structures, acceleration_structure_count)
22654
0
                },
22655
0
                query_type,
22656
0
                unsafe { uninit_slice_from_raw_parts_mut(p_data as *mut u8, data_size) },
22657
0
                stride,
22658
0
            );
22659
0
        match layer_result {
22660
0
            LayerResult::Handled(res) => match res {
22661
0
                Ok(()) => vk::Result::SUCCESS,
22662
0
                Err(e) => e,
22663
            },
22664
            LayerResult::Unhandled => unsafe {
22665
0
                (dispatch_table.write_acceleration_structures_properties_khr)(
22666
0
                    device,
22667
0
                    acceleration_structure_count,
22668
0
                    p_acceleration_structures,
22669
0
                    query_type,
22670
0
                    data_size,
22671
0
                    p_data,
22672
0
                    stride,
22673
0
                )
22674
            },
22675
        }
22676
0
    }
22677
0
    extern "system" fn cmd_copy_acceleration_structure_khr(
22678
0
        command_buffer: vk::CommandBuffer,
22679
0
        p_info: *const vk::CopyAccelerationStructureInfoKHR,
22680
0
    ) {
22681
0
        let global = Self::instance();
22682
0
        // vkCmdCopyAccelerationStructureKHR
22683
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22684
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22685
0
        let layer_result = device_info
22686
0
            .customized_info
22687
0
            .borrow()
22688
0
            .hooks()
22689
0
            .cmd_copy_acceleration_structure_khr(
22690
0
                command_buffer,
22691
0
                unsafe { p_info.as_ref() }.unwrap(),
22692
0
            );
22693
0
        match layer_result {
22694
0
            LayerResult::Handled(res) => res,
22695
            LayerResult::Unhandled => unsafe {
22696
0
                (dispatch_table.cmd_copy_acceleration_structure_khr)(command_buffer, p_info)
22697
            },
22698
        }
22699
0
    }
22700
0
    extern "system" fn cmd_copy_acceleration_structure_to_memory_khr(
22701
0
        command_buffer: vk::CommandBuffer,
22702
0
        p_info: *const vk::CopyAccelerationStructureToMemoryInfoKHR,
22703
0
    ) {
22704
0
        let global = Self::instance();
22705
0
        // vkCmdCopyAccelerationStructureToMemoryKHR
22706
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22707
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22708
0
        let layer_result = device_info
22709
0
            .customized_info
22710
0
            .borrow()
22711
0
            .hooks()
22712
0
            .cmd_copy_acceleration_structure_to_memory_khr(
22713
0
                command_buffer,
22714
0
                unsafe { p_info.as_ref() }.unwrap(),
22715
0
            );
22716
0
        match layer_result {
22717
0
            LayerResult::Handled(res) => res,
22718
            LayerResult::Unhandled => unsafe {
22719
0
                (dispatch_table.cmd_copy_acceleration_structure_to_memory_khr)(
22720
0
                    command_buffer,
22721
0
                    p_info,
22722
0
                )
22723
            },
22724
        }
22725
0
    }
22726
0
    extern "system" fn cmd_copy_memory_to_acceleration_structure_khr(
22727
0
        command_buffer: vk::CommandBuffer,
22728
0
        p_info: *const vk::CopyMemoryToAccelerationStructureInfoKHR,
22729
0
    ) {
22730
0
        let global = Self::instance();
22731
0
        // vkCmdCopyMemoryToAccelerationStructureKHR
22732
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22733
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22734
0
        let layer_result = device_info
22735
0
            .customized_info
22736
0
            .borrow()
22737
0
            .hooks()
22738
0
            .cmd_copy_memory_to_acceleration_structure_khr(
22739
0
                command_buffer,
22740
0
                unsafe { p_info.as_ref() }.unwrap(),
22741
0
            );
22742
0
        match layer_result {
22743
0
            LayerResult::Handled(res) => res,
22744
            LayerResult::Unhandled => unsafe {
22745
0
                (dispatch_table.cmd_copy_memory_to_acceleration_structure_khr)(
22746
0
                    command_buffer,
22747
0
                    p_info,
22748
0
                )
22749
            },
22750
        }
22751
0
    }
22752
0
    extern "system" fn get_acceleration_structure_device_address_khr(
22753
0
        device: vk::Device,
22754
0
        p_info: *const vk::AccelerationStructureDeviceAddressInfoKHR,
22755
0
    ) -> vk::DeviceAddress {
22756
0
        let global = Self::instance();
22757
0
        // vkGetAccelerationStructureDeviceAddressKHR
22758
0
        let device_info = global.get_device_info(device).unwrap();
22759
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22760
0
        let layer_result = device_info
22761
0
            .customized_info
22762
0
            .borrow()
22763
0
            .hooks()
22764
0
            .get_acceleration_structure_device_address_khr(unsafe { p_info.as_ref() }.unwrap());
22765
0
        match layer_result {
22766
0
            LayerResult::Handled(res) => res,
22767
            LayerResult::Unhandled => unsafe {
22768
0
                (dispatch_table.get_acceleration_structure_device_address_khr)(device, p_info)
22769
            },
22770
        }
22771
0
    }
22772
0
    extern "system" fn cmd_write_acceleration_structures_properties_khr(
22773
0
        command_buffer: vk::CommandBuffer,
22774
0
        acceleration_structure_count: u32,
22775
0
        p_acceleration_structures: *const vk::AccelerationStructureKHR,
22776
0
        query_type: vk::QueryType,
22777
0
        query_pool: vk::QueryPool,
22778
0
        first_query: u32,
22779
0
    ) {
22780
0
        let global = Self::instance();
22781
0
        // vkCmdWriteAccelerationStructuresPropertiesKHR
22782
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22783
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22784
0
        let layer_result = device_info
22785
0
            .customized_info
22786
0
            .borrow()
22787
0
            .hooks()
22788
0
            .cmd_write_acceleration_structures_properties_khr(
22789
0
                command_buffer,
22790
0
                unsafe {
22791
0
                    slice_from_raw_parts(p_acceleration_structures, acceleration_structure_count)
22792
0
                },
22793
0
                query_type,
22794
0
                query_pool,
22795
0
                first_query,
22796
0
            );
22797
0
        match layer_result {
22798
0
            LayerResult::Handled(res) => res,
22799
            LayerResult::Unhandled => unsafe {
22800
0
                (dispatch_table.cmd_write_acceleration_structures_properties_khr)(
22801
0
                    command_buffer,
22802
0
                    acceleration_structure_count,
22803
0
                    p_acceleration_structures,
22804
0
                    query_type,
22805
0
                    query_pool,
22806
0
                    first_query,
22807
0
                )
22808
            },
22809
        }
22810
0
    }
22811
0
    extern "system" fn get_device_acceleration_structure_compatibility_khr(
22812
0
        device: vk::Device,
22813
0
        p_version_info: *const vk::AccelerationStructureVersionInfoKHR,
22814
0
        p_compatibility: *mut vk::AccelerationStructureCompatibilityKHR,
22815
0
    ) {
22816
0
        let global = Self::instance();
22817
0
        // vkGetDeviceAccelerationStructureCompatibilityKHR
22818
0
        let device_info = global.get_device_info(device).unwrap();
22819
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22820
0
        let layer_result = device_info
22821
0
            .customized_info
22822
0
            .borrow()
22823
0
            .hooks()
22824
0
            .get_device_acceleration_structure_compatibility_khr(
22825
0
                unsafe { p_version_info.as_ref() }.unwrap(),
22826
0
            );
22827
0
        match layer_result {
22828
0
            LayerResult::Handled(res) => {
22829
0
                *unsafe { p_compatibility.as_mut() }.unwrap() = res;
22830
0
            }
22831
            LayerResult::Unhandled => unsafe {
22832
0
                (dispatch_table.get_device_acceleration_structure_compatibility_khr)(
22833
0
                    device,
22834
0
                    p_version_info,
22835
0
                    p_compatibility,
22836
0
                )
22837
            },
22838
        }
22839
0
    }
22840
0
    extern "system" fn get_acceleration_structure_build_sizes_khr(
22841
0
        device: vk::Device,
22842
0
        build_type: vk::AccelerationStructureBuildTypeKHR,
22843
0
        p_build_info: *const vk::AccelerationStructureBuildGeometryInfoKHR,
22844
0
        p_max_primitive_counts: *const u32,
22845
0
        p_size_info: *mut vk::AccelerationStructureBuildSizesInfoKHR,
22846
0
    ) {
22847
0
        let global = Self::instance();
22848
0
        // vkGetAccelerationStructureBuildSizesKHR
22849
0
        let device_info = global.get_device_info(device).unwrap();
22850
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22851
0
        let layer_result = device_info
22852
0
            .customized_info
22853
0
            .borrow()
22854
0
            .hooks()
22855
0
            .get_acceleration_structure_build_sizes_khr(
22856
0
                build_type,
22857
0
                unsafe { p_build_info.as_ref() }.unwrap(),
22858
0
                unsafe {
22859
0
                    maybe_slice_from_raw_parts(
22860
0
                        p_max_primitive_counts,
22861
0
                        unsafe { p_build_info.as_ref() }.unwrap().geometry_count,
22862
0
                    )
22863
0
                },
22864
0
                unsafe { ptr_as_uninit_mut(p_size_info) }.unwrap(),
22865
0
            );
22866
0
        match layer_result {
22867
0
            LayerResult::Handled(res) => res,
22868
            LayerResult::Unhandled => unsafe {
22869
0
                (dispatch_table.get_acceleration_structure_build_sizes_khr)(
22870
0
                    device,
22871
0
                    build_type,
22872
0
                    p_build_info,
22873
0
                    p_max_primitive_counts,
22874
0
                    p_size_info,
22875
0
                )
22876
            },
22877
        }
22878
0
    }
22879
0
    extern "system" fn cmd_trace_rays_khr(
22880
0
        command_buffer: vk::CommandBuffer,
22881
0
        p_raygen_shader_binding_table: *const vk::StridedDeviceAddressRegionKHR,
22882
0
        p_miss_shader_binding_table: *const vk::StridedDeviceAddressRegionKHR,
22883
0
        p_hit_shader_binding_table: *const vk::StridedDeviceAddressRegionKHR,
22884
0
        p_callable_shader_binding_table: *const vk::StridedDeviceAddressRegionKHR,
22885
0
        width: u32,
22886
0
        height: u32,
22887
0
        depth: u32,
22888
0
    ) {
22889
0
        let global = Self::instance();
22890
0
        // vkCmdTraceRaysKHR
22891
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22892
0
        let dispatch_table = &device_info.dispatch_table.khr_ray_tracing_pipeline;
22893
0
        let layer_result = device_info
22894
0
            .customized_info
22895
0
            .borrow()
22896
0
            .hooks()
22897
0
            .cmd_trace_rays_khr(
22898
0
                command_buffer,
22899
0
                unsafe { p_raygen_shader_binding_table.as_ref() }.unwrap(),
22900
0
                unsafe { p_miss_shader_binding_table.as_ref() }.unwrap(),
22901
0
                unsafe { p_hit_shader_binding_table.as_ref() }.unwrap(),
22902
0
                unsafe { p_callable_shader_binding_table.as_ref() }.unwrap(),
22903
0
                width,
22904
0
                height,
22905
0
                depth,
22906
0
            );
22907
0
        match layer_result {
22908
0
            LayerResult::Handled(res) => res,
22909
            LayerResult::Unhandled => unsafe {
22910
0
                (dispatch_table.cmd_trace_rays_khr)(
22911
0
                    command_buffer,
22912
0
                    p_raygen_shader_binding_table,
22913
0
                    p_miss_shader_binding_table,
22914
0
                    p_hit_shader_binding_table,
22915
0
                    p_callable_shader_binding_table,
22916
0
                    width,
22917
0
                    height,
22918
0
                    depth,
22919
0
                )
22920
            },
22921
        }
22922
0
    }
22923
0
    extern "system" fn create_ray_tracing_pipelines_khr(
22924
0
        device: vk::Device,
22925
0
        deferred_operation: vk::DeferredOperationKHR,
22926
0
        pipeline_cache: vk::PipelineCache,
22927
0
        create_info_count: u32,
22928
0
        p_create_infos: *const vk::RayTracingPipelineCreateInfoKHR,
22929
0
        p_allocator: *const vk::AllocationCallbacks,
22930
0
        p_pipelines: *mut vk::Pipeline,
22931
0
    ) -> vk::Result {
22932
0
        let global = Self::instance();
22933
0
        // vkCreateRayTracingPipelinesKHR
22934
0
        let device_info = global.get_device_info(device).unwrap();
22935
0
        let dispatch_table = &device_info.dispatch_table.khr_ray_tracing_pipeline;
22936
0
        let layer_result = device_info
22937
0
            .customized_info
22938
0
            .borrow()
22939
0
            .hooks()
22940
0
            .create_ray_tracing_pipelines_khr(
22941
0
                deferred_operation,
22942
0
                pipeline_cache,
22943
0
                unsafe { slice_from_raw_parts(p_create_infos, create_info_count) },
22944
0
                unsafe { p_allocator.as_ref() },
22945
0
            );
22946
0
        match layer_result {
22947
0
            LayerResult::Handled(res) => match res {
22948
0
                Ok(res) => {
22949
0
                    unsafe {
22950
0
                        std::slice::from_raw_parts_mut(
22951
0
                            p_pipelines,
22952
0
                            create_info_count.try_into().unwrap(),
22953
0
                        )
22954
0
                    }
22955
0
                    .copy_from_slice(&res);
22956
0
                    vk::Result::SUCCESS
22957
                }
22958
0
                Err(e) => e,
22959
            },
22960
            LayerResult::Unhandled => unsafe {
22961
0
                (dispatch_table.create_ray_tracing_pipelines_khr)(
22962
0
                    device,
22963
0
                    deferred_operation,
22964
0
                    pipeline_cache,
22965
0
                    create_info_count,
22966
0
                    p_create_infos,
22967
0
                    p_allocator,
22968
0
                    p_pipelines,
22969
0
                )
22970
            },
22971
        }
22972
0
    }
22973
0
    extern "system" fn get_ray_tracing_capture_replay_shader_group_handles_khr(
22974
0
        device: vk::Device,
22975
0
        pipeline: vk::Pipeline,
22976
0
        first_group: u32,
22977
0
        group_count: u32,
22978
0
        data_size: usize,
22979
0
        p_data: *mut c_void,
22980
0
    ) -> vk::Result {
22981
0
        let global = Self::instance();
22982
0
        // vkGetRayTracingCaptureReplayShaderGroupHandlesKHR
22983
0
        let device_info = global.get_device_info(device).unwrap();
22984
0
        let dispatch_table = &device_info.dispatch_table.khr_ray_tracing_pipeline;
22985
0
        let layer_result = device_info
22986
0
            .customized_info
22987
0
            .borrow()
22988
0
            .hooks()
22989
0
            .get_ray_tracing_capture_replay_shader_group_handles_khr(
22990
0
                pipeline,
22991
0
                first_group,
22992
0
                group_count,
22993
0
                unsafe { uninit_slice_from_raw_parts_mut(p_data as *mut u8, data_size) },
22994
0
            );
22995
0
        match layer_result {
22996
0
            LayerResult::Handled(res) => match res {
22997
0
                Ok(()) => vk::Result::SUCCESS,
22998
0
                Err(e) => e,
22999
            },
23000
            LayerResult::Unhandled => unsafe {
23001
0
                (dispatch_table.get_ray_tracing_capture_replay_shader_group_handles_khr)(
23002
0
                    device,
23003
0
                    pipeline,
23004
0
                    first_group,
23005
0
                    group_count,
23006
0
                    data_size,
23007
0
                    p_data,
23008
0
                )
23009
            },
23010
        }
23011
0
    }
23012
0
    extern "system" fn cmd_trace_rays_indirect_khr(
23013
0
        command_buffer: vk::CommandBuffer,
23014
0
        p_raygen_shader_binding_table: *const vk::StridedDeviceAddressRegionKHR,
23015
0
        p_miss_shader_binding_table: *const vk::StridedDeviceAddressRegionKHR,
23016
0
        p_hit_shader_binding_table: *const vk::StridedDeviceAddressRegionKHR,
23017
0
        p_callable_shader_binding_table: *const vk::StridedDeviceAddressRegionKHR,
23018
0
        indirect_device_address: vk::DeviceAddress,
23019
0
    ) {
23020
0
        let global = Self::instance();
23021
0
        // vkCmdTraceRaysIndirectKHR
23022
0
        let device_info = global.get_device_info(command_buffer).unwrap();
23023
0
        let dispatch_table = &device_info.dispatch_table.khr_ray_tracing_pipeline;
23024
0
        let layer_result = device_info
23025
0
            .customized_info
23026
0
            .borrow()
23027
0
            .hooks()
23028
0
            .cmd_trace_rays_indirect_khr(
23029
0
                command_buffer,
23030
0
                unsafe { p_raygen_shader_binding_table.as_ref() }.unwrap(),
23031
0
                unsafe { p_miss_shader_binding_table.as_ref() }.unwrap(),
23032
0
                unsafe { p_hit_shader_binding_table.as_ref() }.unwrap(),
23033
0
                unsafe { p_callable_shader_binding_table.as_ref() }.unwrap(),
23034
0
                indirect_device_address,
23035
0
            );
23036
0
        match layer_result {
23037
0
            LayerResult::Handled(res) => res,
23038
            LayerResult::Unhandled => unsafe {
23039
0
                (dispatch_table.cmd_trace_rays_indirect_khr)(
23040
0
                    command_buffer,
23041
0
                    p_raygen_shader_binding_table,
23042
0
                    p_miss_shader_binding_table,
23043
0
                    p_hit_shader_binding_table,
23044
0
                    p_callable_shader_binding_table,
23045
0
                    indirect_device_address,
23046
0
                )
23047
            },
23048
        }
23049
0
    }
23050
0
    extern "system" fn get_ray_tracing_shader_group_stack_size_khr(
23051
0
        device: vk::Device,
23052
0
        pipeline: vk::Pipeline,
23053
0
        group: u32,
23054
0
        group_shader: vk::ShaderGroupShaderKHR,
23055
0
    ) -> vk::DeviceSize {
23056
0
        let global = Self::instance();
23057
0
        // vkGetRayTracingShaderGroupStackSizeKHR
23058
0
        let device_info = global.get_device_info(device).unwrap();
23059
0
        let dispatch_table = &device_info.dispatch_table.khr_ray_tracing_pipeline;
23060
0
        let layer_result = device_info
23061
0
            .customized_info
23062
0
            .borrow()
23063
0
            .hooks()
23064
0
            .get_ray_tracing_shader_group_stack_size_khr(pipeline, group, group_shader);
23065
0
        match layer_result {
23066
0
            LayerResult::Handled(res) => res,
23067
            LayerResult::Unhandled => unsafe {
23068
0
                (dispatch_table.get_ray_tracing_shader_group_stack_size_khr)(
23069
0
                    device,
23070
0
                    pipeline,
23071
0
                    group,
23072
0
                    group_shader,
23073
0
                )
23074
            },
23075
        }
23076
0
    }
23077
0
    extern "system" fn cmd_set_ray_tracing_pipeline_stack_size_khr(
23078
0
        command_buffer: vk::CommandBuffer,
23079
0
        pipeline_stack_size: u32,
23080
0
    ) {
23081
0
        let global = Self::instance();
23082
0
        // vkCmdSetRayTracingPipelineStackSizeKHR
23083
0
        let device_info = global.get_device_info(command_buffer).unwrap();
23084
0
        let dispatch_table = &device_info.dispatch_table.khr_ray_tracing_pipeline;
23085
0
        let layer_result = device_info
23086
0
            .customized_info
23087
0
            .borrow()
23088
0
            .hooks()
23089
0
            .cmd_set_ray_tracing_pipeline_stack_size_khr(command_buffer, pipeline_stack_size);
23090
0
        match layer_result {
23091
0
            LayerResult::Handled(res) => res,
23092
            LayerResult::Unhandled => unsafe {
23093
0
                (dispatch_table.cmd_set_ray_tracing_pipeline_stack_size_khr)(
23094
0
                    command_buffer,
23095
0
                    pipeline_stack_size,
23096
0
                )
23097
            },
23098
        }
23099
0
    }
23100
0
    extern "system" fn cmd_draw_mesh_tasks_ext(
23101
0
        command_buffer: vk::CommandBuffer,
23102
0
        group_countx: u32,
23103
0
        group_county: u32,
23104
0
        group_countz: u32,
23105
0
    ) {
23106
0
        let global = Self::instance();
23107
0
        // vkCmdDrawMeshTasksEXT
23108
0
        let device_info = global.get_device_info(command_buffer).unwrap();
23109
0
        let dispatch_table = &device_info.dispatch_table.ext_mesh_shader;
23110
0
        let layer_result = device_info
23111
0
            .customized_info
23112
0
            .borrow()
23113
0
            .hooks()
23114
0
            .cmd_draw_mesh_tasks_ext(command_buffer, group_countx, group_county, group_countz);
23115
0
        match layer_result {
23116
0
            LayerResult::Handled(res) => res,
23117
            LayerResult::Unhandled => unsafe {
23118
0
                (dispatch_table.cmd_draw_mesh_tasks_ext)(
23119
0
                    command_buffer,
23120
0
                    group_countx,
23121
0
                    group_county,
23122
0
                    group_countz,
23123
0
                )
23124
            },
23125
        }
23126
0
    }
23127
0
    extern "system" fn cmd_draw_mesh_tasks_indirect_ext(
23128
0
        command_buffer: vk::CommandBuffer,
23129
0
        buffer: vk::Buffer,
23130
0
        offset: vk::DeviceSize,
23131
0
        draw_count: u32,
23132
0
        stride: u32,
23133
0
    ) {
23134
0
        let global = Self::instance();
23135
0
        // vkCmdDrawMeshTasksIndirectEXT
23136
0
        let device_info = global.get_device_info(command_buffer).unwrap();
23137
0
        let dispatch_table = &device_info.dispatch_table.ext_mesh_shader;
23138
0
        let layer_result = device_info
23139
0
            .customized_info
23140
0
            .borrow()
23141
0
            .hooks()
23142
0
            .cmd_draw_mesh_tasks_indirect_ext(command_buffer, buffer, offset, draw_count, stride);
23143
0
        match layer_result {
23144
0
            LayerResult::Handled(res) => res,
23145
            LayerResult::Unhandled => unsafe {
23146
0
                (dispatch_table.cmd_draw_mesh_tasks_indirect_ext)(
23147
0
                    command_buffer,
23148
0
                    buffer,
23149
0
                    offset,
23150
0
                    draw_count,
23151
0
                    stride,
23152
0
                )
23153
            },
23154
        }
23155
0
    }
23156
0
    extern "system" fn cmd_draw_mesh_tasks_indirect_count_ext(
23157
0
        command_buffer: vk::CommandBuffer,
23158
0
        buffer: vk::Buffer,
23159
0
        offset: vk::DeviceSize,
23160
0
        count_buffer: vk::Buffer,
23161
0
        count_buffer_offset: vk::DeviceSize,
23162
0
        max_draw_count: u32,
23163
0
        stride: u32,
23164
0
    ) {
23165
0
        let global = Self::instance();
23166
0
        // vkCmdDrawMeshTasksIndirectCountEXT
23167
0
        let device_info = global.get_device_info(command_buffer).unwrap();
23168
0
        let dispatch_table = &device_info.dispatch_table.ext_mesh_shader;
23169
0
        let layer_result = device_info
23170
0
            .customized_info
23171
0
            .borrow()
23172
0
            .hooks()
23173
0
            .cmd_draw_mesh_tasks_indirect_count_ext(
23174
0
                command_buffer,
23175
0
                buffer,
23176
0
                offset,
23177
0
                count_buffer,
23178
0
                count_buffer_offset,
23179
0
                max_draw_count,
23180
0
                stride,
23181
0
            );
23182
0
        match layer_result {
23183
0
            LayerResult::Handled(res) => res,
23184
            LayerResult::Unhandled => unsafe {
23185
0
                (dispatch_table.cmd_draw_mesh_tasks_indirect_count_ext)(
23186
0
                    command_buffer,
23187
0
                    buffer,
23188
0
                    offset,
23189
0
                    count_buffer,
23190
0
                    count_buffer_offset,
23191
0
                    max_draw_count,
23192
0
                    stride,
23193
0
                )
23194
            },
23195
        }
23196
0
    }
23197
}